how to find different permutations of columns of a matrix such that at any permutation just two columns change place
Afficher commentaires plus anciens
what permutations are there if we want n-2 columns be the same and just 2 columns swap. Here is an example of what I mean: a=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] then indices would be (1,2,3,4) now I want to know how can I implement (2,1,3,4) (3,2,1,4) (4,2,3,1) (1,3,2,4) (1,4,3,2) (1,2,4,3) as you see at any permutation just 2 indices are swapping and the rest are the same as in (1,2,3,4) Thank you in advance
Réponses (1)
Roger Stafford
le 25 Juil 2014
Modifié(e) : Roger Stafford
le 25 Juil 2014
c = nchoosek(1:n,2);
p = repmat(1:n,size(c,1),1);
for k = 1:size(c,1)
p(k,c(k,:)) = p(k,c(k,[2,1]);
end
Each row of 'p' will be one of the desired permutations to be applied to the columns of 'a'. For example, the k-th row of p can be used to compute
bk = a(:,p(k,:));
Catégories
En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!