How can I Store all the possible combinations of columns of a matrix?
3 次查看(过去 30 天)
显示 更早的评论
for example I have : [1 2 3; 4 5 6; 7 8 9] as 3x3 matrix. Now I want : [2 1 3; 5 4 6; 8 7 9] and every other combination of it. in other word I want all nchoosek(n,2) of columns of a nxn matrix.
0 个评论
采纳的回答
José-Luis
2014-7-25
I would recommend that you only save the indices, if you really need to. Sure, you only have a small matrix, but the amount of required memory can become a problem really fast in combinatorial problems.
a = [1 2 3; 4 5 6; 7 8 9];
idx = perms(1:size(a,2));
for ii = idx'
your_mat = a(:,ii)
end
3 个评论
Chenyang Zhang
2020-5-12
how to store all the your_mat value from every loop into one matrix? Thanks in advance
更多回答(1 个)
Ben11
2014-7-25
As a starting point you could store the output of the function 'perms' is a cell array, in which the kth cell cell contains all the possible permutations of the kth column. Eg:
clear all
clc
A= [1 2 3;4 5 6;7 8 9];
P = cell(1,size(A,1));
for k = 1:size(A,1)
P{k} = perms(A(:,k))'; % Notice the transpose of the output.
end
disp('P{1}')
disp(P{1})
disp('P{2}')
disp(P{2})
disp('P{3}')
disp(P{3})
which gives this:
P{1}
7 7 4 4 1 1
4 1 7 1 4 7
1 4 1 7 7 4
P{2}
8 8 5 5 2 2
5 2 8 2 5 8
2 5 2 8 8 5
P{3}
9 9 6 6 3 3
6 3 9 3 6 9
3 6 3 9 9 6
Then you could implement a loop in which you take every column of say P{1} and get the possible combinations with the columns from P{2}, P{3} and so on. There is probably a built-in function for this but I don't know it sorry. I hope that helps!
2 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!