我有一个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)
。