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.

采纳的回答

José-Luis
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
Chenyang Zhang 2020-5-12
how to store all the your_mat value from every loop into one matrix? Thanks in advance

请先登录,再进行评论。

更多回答(1 个)

Ben11
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!

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by