2015-10-20 100 views
-5

假设我有一个n×p矩阵,其列[a_1,...,a_p]。如何使用for循环返回此矩阵的所有可能列置换(例如:** [a_2,a_1,...,a_p]等)?MATLAB:计算矩阵的所有可能的列置换

+2

看看这个其他问题:生成元素的所有可能的组合一些向量(Cartesian产品)](http://stackoverflow.com/questions/4165859/generate-all-possible-combinations-of-the-elements-of-some-vectors-cartesian-pr) – Schorsch

回答

1

如果我理解正确的话,您可以生成列索引的所有排列与perms,并将结果索引到矩阵:

M = magic(3);    % // example matrix 
pp = perms(1:size(M,2)); % // each row is a permutation 
for p = pp.'    %'// "for" loops over columns, so transpose pp 
    permuted_M = M(:,p); % // matrix with permuted columns 
end