0

我需要生成 a 的所有可能组合10X5 matrix。我需要的是 all 10X1 matrix,10X2 matrix10X3 matrix。什么是最有效的方法。我可以使用多个循环,但这会效率低下。例如:我有一个矩阵:

col1 col2 col3 col4

我想:

col1 and col2 and col3 and col4

然后:

col1 col2 and col1 col3 and col1 col4

依此类推以返回所有 2^5-1列组合

4

2 回答 2

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

然后使用索引通过选择列来获取子矩阵

于 2013-04-15T16:00:02.593 回答
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
于 2013-04-15T16:08:02.643 回答