随机交换矩阵的列:Matlab

时间:2012-09-04 13:45:46

标签: matlab matrix

假设

A = [1 2 3 5 7 9
     6 5 0 3 2 3]

我想随机化矩阵列位置的位置;像这样给B

B = [3 9 1 7 2 5
     0 3 6 2 5 3]

我该怎么做这个Matlab?

3 个答案:

答案 0 :(得分:1)

尝试

B = A(randperm(length(A)))

请参阅文档以获取解释。

答案 1 :(得分:0)

您需要使用randperm函数生成列索引的随机排列(从1到A中的列数),然后您可以将其编入索引A用:

B = A(:, randperm(size(A, 2)));

答案 2 :(得分:0)

现在代码格式正确,很清楚OP要保留列,尽管randperm仍然是HPM答案给出的最简单的选项。

idx = randperm(size(A,2)); % Create list of integers 1:n, in random order, 
                           % where n = num of columns

B = A(:, idx);             % Shuffles columns about, on all rows, to indixes in idx