matlab中的shuffle矩阵元素

时间:2012-11-06 18:26:19

标签: matlab

我有一个马丁,想要改变它的元素。

x=[1 2 5 4 6 ]

在洗牌后(类似这样)

x=[2 4 6 5 1]    

是matlab有功能吗? 在php array_shuffle 中执行此操作。

2 个答案:

答案 0 :(得分:22)

  1. 使用randperm

    获取混洗索引
    idx = randperm(length(x));
    
  2. 使用索引获取随机向量

    xperm = x(idx);

答案 1 :(得分:3)

作为randperm的替代方案,您还可以使用统计工具箱中的randsample

  

y = randsample(n,k)返回k - 1向量y值随机均匀采样,无需替换,从整数1到{{ 1}}。

请注意,它是“无需替换”(默认情况下)。因此,如果将n设置为k,则相当于对向量进行随机随机播放。例如:

length(x)

我比x = 1:5; randsample(x,length(x)) %ans = % 4 5 3 1 2 更喜欢这个,因为它可以轻松扩展到不同的用途。例如,要随机从randperm中绘制3个元素(例如从包含有限项的存储桶中绘制),请执行x。同样,如果您希望绘制3个数字,其中字母表由randsample(x,3)的元素组成,但允许重复,则执行x