У меня есть martix и вы хотите перетасовать его элемент.
x=[1 2 5 4 6 ]
после перетасовки (что-то вроде этого)
x=[2 4 6 5 1]
есть функция Matlab для нее?
в php array_shuffle выполните это.
Ответ 1
получают перетасованные индексы с помощью randperm
idx = randperm(length(x));
использовать индексы для получения перетасованного вектора
xperm = x(idx);
Ответ 2
В качестве альтернативы randperm вы также можете использовать randsample из панели инструментов статистики.
y = randsample(n,k) возвращает a k -by- 1 vector y значений, выбранных равномерно случайным образом, без замены, от целых чисел 1 до n.
Обратите внимание, что это "без замены" (по умолчанию). Поэтому, если вы установите k как length(x), это эквивалентно случайному перемещению вектора. Например:
Мне нравится это больше, чем randperm, потому что он легко расширяется для разных целей. Например, чтобы случайно выделить 3 элемента из x (например, рисование из ведра с конечными элементами), вы делаете randsample(x,3). Аналогично, если вы хотите нарисовать 3 числа, где алфавит состоит из элементов x, но разрешите повторения, вы делаете randsample(x,3,true).