2015-10-20 2 views
-5

Предположим, у меня есть матрица n x p с колонками [a_1, ..., a_p]. Как я могу использовать for-loop для возврата всех возможных перестановок столбцов этой матрицы (например: ** [a_2, a_1, ..., a_p] и т. Д. **)?MATLAB: вычислить все возможные перестановки столбцов матрицы

+2

проверить это другой вопрос: [Сформировать все возможные комбинации элементов некоторых векторов (декартово произведение)] (http://stackoverflow.com/questions/4165859/generate-all-possible-combinations-of-the-ments-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 
Смежные вопросы