从MXN矩阵生成2 ^ N-1个矩阵

时间:2013-04-15 15:50:42

标签: arrays matlab vector matrix

我需要生成10X5 matrix的所有可能组合。我需要的是所有10X1 matrix10X2 matrix10X3 matrix等。最有效的方式。我可以使用多个循环,但这将是低效的。 例如:我有一个矩阵:

col1 col2 col3 col4

我想:

col1 and col2 and col3 and col4

然后:

col1 col2 and col1 col3 and col1 col4

依旧返回

的所有2 ^ 5-1组合

2 个答案:

答案 0 :(得分:3)

您可以在循环中使用nchoosek

for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating
  index{k} = nchoosek(1:5, k);
end

然后使用index通过选择列

来获取子矩阵

答案 1 :(得分:2)

我不打算为你解决,但这里有一些有用的功能。您必须澄清您的输入究竟是什么。

>> nchoosek([1:4],3)

ans =

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

>> combntns([1:3],2)

ans =

     1     2
     1     3
     2     3

>> perms([1:3])

ans =

     3     2     1
     3     1     2
     2     3     1
     2     1     3
     1     2     3
     1     3     2