我有一個martix,想打亂它的元素。matlab中的shuffle矩陣元素
x=[1 2 5 4 6 ]
洗牌(像這樣)後
x=[2 4 6 5 1]
是MATLAB具有的功能呢? 在php array_shuffle這樣做。使用randperm
idx = randperm(length(x));
使用索引
我有一個martix,想打亂它的元素。matlab中的shuffle矩陣元素
x=[1 2 5 4 6 ]
洗牌(像這樣)後
x=[2 4 6 5 1]
是MATLAB具有的功能呢? 在php array_shuffle這樣做。使用randperm
idx = randperm(length(x));
使用索引
獲得洗牌索引以獲得混洗矢量
xperm = x(idx);
作爲替代品randperm
,也可以使用randsample
來回統計工具箱。
y = randsample(n,k)
返回隨機均勻採樣值的k
-by-1
矢量y
,無需更換,從整數1
到n
。
請注意,它是「沒有替換」(默認情況下)。因此,如果您將k
設置爲length(x)
,則相當於對矢量進行隨機洗牌。例如:
x = 1:5;
randsample(x,length(x))
%ans =
% 4 5 3 1 2
我喜歡比randperm
這更多,因爲它很容易擴展到不同的用途。例如,要隨機抽取x
中的3個元素(如從具有有限項目的桶中抽取),則可以執行randsample(x,3)
。同樣,如果您希望繪製3個數字,其中字母表由x
的元素組成,但允許重複,您可以使用randsample(x,3,true)
。