Скажем, у нас есть матрица размером 100x3
Как бы вы перетасовали строки в MATLAB?
Чтобы перетасовать строки матрицы, вы можете использовать RANDPERM
shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);
randperm
будет генерировать список N
случайных значений и сортировать их, возвращая второй результат sort
в качестве результата.
Это можно сделать, создав новый случайный индекс для строк матрицы через функцию Matlab randsample.
matrix=matrix(randsample(1:length(matrix),length(matrix)),:);
'false'
- если выборка с заменой, результирующая матрица будет содержать повторяющиеся строки, в то время как другие исчезнут. В случае выборки без замены randsample
вызывает randperm
, который, таким образом, должен быть лишь незначительно медленнее, чем прямой вызов randperm
.
Для больших наборов данных вы можете использовать функцию Shuffle
Он использует D.E. Алгоритм Knuth shuffle (также называемый Fisher-Yates) и симпатичный генератор случайных чисел KISS (Г. Марсалья).