how to find different permutations of columns of a matrix such that at any permutation just two columns change place
2 views (last 30 days)
Show older comments
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
0 Comments
Answers (1)
Roger Stafford
on 25 Jul 2014
Edited: Roger Stafford
on 25 Jul 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,:));
0 Comments
See Also
Categories
Find more on Creating and Concatenating Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!