使用matlab在新矩阵中的矩阵的所有行组合

时间:2014-03-27 09:11:17

标签: arrays matlab matrix row combinations

我对Matlab中矩阵行的所有组合都有疑问。 我目前有一个具有以下结构的矩阵:

1 2 
1 3
1 4
2 3
2 4
3 4

现在我想获得这些“对”的所有可能组合而不在同一行中使用两次数字:

1 2 3 4
1 3 2 4
1 4 2 3

必须有可能用n-“doublecolumns”来制作它。这意味着,当我的对矩阵例如直到“5 6”时,我想用这些双列中的3个创建矩阵:

1 2 3 4 5 6
1 2 3 5 4 6
1 2 3 6 4 5
1 3 2 4 5 6
1 3 2 5 4 6
....

我希望你明白我的意思:) 任何想法如何解决这个问题?

谢谢并且最好的关注 纳斯

1 个答案:

答案 0 :(得分:0)

M = [1 2 
     1 3
     1 4
     2 3
     2 4
     3 4]; %// example data
n = floor(max(M(:))/2); %// size of tuples. Compute this way, or set manually

p = nchoosek(1:size(M,1), n).'; %'// generate all n-tuples of row indices
R = reshape(M(p,:).', n*size(M,2), []).'; %// generate result...
R = R(all(diff(sort(R.'))),:); %'//...removing combinations with repeated values