【发布时间】:2012-11-06 18:26:19
【问题描述】:
我有一个 martix 并且想要洗牌它的元素。
x=[1 2 5 4 6 ]
洗牌后(像这样)
x=[2 4 6 5 1]
matlab 有它的功能吗? 在 php array_shuffle 中这样做。
【问题讨论】:
标签: matlab
我有一个 martix 并且想要洗牌它的元素。
x=[1 2 5 4 6 ]
洗牌后(像这样)
x=[2 4 6 5 1]
matlab 有它的功能吗? 在 php array_shuffle 中这样做。
【问题讨论】:
标签: matlab
作为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)。
【讨论】:
使用randperm 获得洗牌索引
idx = randperm(length(x));
使用索引获得混洗向量
xperm = x(idx);
【讨论】: