行Matlab的随机顺序

时间:2011-03-26 18:14:23

标签: matlab shuffle

假设我们有一个大小为100x3的矩阵

你如何在MATLAB中对行进行洗牌?

4 个答案:

答案 0 :(得分:70)

要对矩阵的行进行随机播放,您可以使用RANDPERM

shuffledArray = orderedArray(randperm(size(orderedArray,1)),:);

randperm将生成N个随机值列表并对其进行排序,并返回sort的第二个输出结果。

答案 1 :(得分:5)

这可以通过Matlab的 randsample 函数为矩阵行创建一个新的随机索引来完成。

matrix=matrix(randsample(1:length(matrix),length(matrix)),:);

答案 2 :(得分:2)

在阅读answer of Jonas时,我发现它有点难以阅读,难以理解。在Mathworks中,我发现了一个类似的question,其答案更易读,更易于理解。从Mathworks中获取想法我写了一个函数:

function ret = shuffleRow(mat)

[r c] = size(mat);
shuffledRow = randperm(r);
ret = mat(shuffledRow, :);

实际上它与Jonas' answer的作用相同。但我认为它更易读,更容易理解。

答案 3 :(得分:1)

对于大型数据集,您可以使用自定义Shuffle函数

  

它使用D.E. Knuth的shuffle算法(也称为Fisher-Yates)和可爱的KISS随机数发生器(G. Marsaglia)。