我需要生成 a 的所有可能组合10X5 matrix
。我需要的是 all 10X1 matrix
,10X2 matrix
等10X3 matrix
。什么是最有效的方法。我可以使用多个循环,但这会效率低下。例如:我有一个矩阵:
col1 col2 col3 col4
我想:
col1 and col2 and col3 and col4
然后:
col1 col2 and col1 col3 and col1 col4
依此类推以返回所有 2^5-1列组合
您可以nchoosek
循环使用:
for k = 1:ceil(5/2) %only need to go half way up otherwise start repeating
index{k} = nchoosek(1:5, k);
end
然后使用索引通过选择列来获取子矩阵
我不会为你解决它,但这里有一些有用的功能。您必须澄清您的输入到底是什么。
>> 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