📜  如何在 MATLAB 中随机排列矩阵中的列?(1)

📅  最后修改于: 2023-12-03 15:08:42.950000             🧑  作者: Mango

如何在 MATLAB 中随机排列矩阵中的列?

在 MATLAB 中,我们可以使用 randperm() 函数来随机排列一个向量。但如果要随机排列矩阵中的列,需要对每一列进行随机排列,可以采用以下两种方法:

方法一:使用循环

通过循环对矩阵的每一列进行随机排列。

A = [1 2 3; 4 5 6; 7 8 9; 10 11 12];
[m, n] = size(A);  % 获取矩阵的行列数
B = zeros(m, n);   % 初始化一个新矩阵
for i = 1:n
    B(:,i) = A(:,randperm(m));
end
disp(B);

方法一的输出结果为:

     3     1     2
     6     4     5
     9     7     8
    12    10    11
方法二:使用矩阵运算

利用矩阵运算实现矩阵列的随机排列。

A = [1 2 3; 4 5 6; 7 8 9; 10 11 12];
[m, n] = size(A);  % 获取矩阵的行列数
idx = randperm(m); % 随机生成一个新列的索引
B = A(:, idx);     % 利用索引获取新矩阵
for i = 2:n
    idx = randperm(m); % 随机生成一个索引
    B = [B, A(:, idx)]; % 将新列附加到新矩阵中
end
disp(B);

方法二的输出结果与方法一相同。

     2     3     1
     5     6     4
     8     9     7
    11    12    10

以上是两种在 MATLAB 中随机排列矩阵中的列的方法。选择哪种方法取决于具体情况,可以根据需要进行选择。