首页 文章

matlab中的shuffle矩阵元素

提问于
浏览
10

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

x=[1 2 5 4 6 ]

洗牌之后(像这样)

x=[2 4 6 5 1]

matlab有功能吗? in php array_shuffle 这样做 .

2 回答

  • 21
    • 使用 randperm 获取混洗索引
    idx = randperm(length(x));
    
    • 使用索引来获得随机向量

    xperm = x(idx);

  • 3

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

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

    请注意,它是"without replacement"(默认情况下) . 因此,如果将 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) .

相关问题