您好我可以知道如何使用matlab执行此操作? 我试过nchoosek,但只适用于1种组合。我想一起输出数组
设S = {a,b,c,d,e}
我想从3种组合开始得到这样的组合:
3种组合:{a,b,c},{a,b,d},{a,b,e},{a,c,d},{a,c,e},{a ,d,e}
4种组合:{a,b,c,d},{a,b,c,e},{a,c,d,e}
5种组合:{a,b,c,d,e}
所以输出会是这样的:
{a,b,c}
{a,b,d}
{a,b,e}
{a,c,d}
{a,c,d} } {a,d,e}
{a,b,c,d}
{a,b,c,e}
{a,c,d,e } {
A,b,C,d,E}
感谢
答案 0 :(得分:3)
你可以在那里使用循环或arrayfun
这只是一种表达这种循环方法而不是矢量化方法的紧凑方式 -
combs = arrayfun(@(x) nchoosek(S,x),3:numel(S),'Uniform',0)
输出将是一个单元格数组,每个单元格代表每个组合的值。因此,当您运行代码时,您将获得 -
>> combs{1}
ans =
2 7 4
2 7 1
2 7 9
2 4 1
2 4 9
2 1 9
7 4 1
7 4 9
7 1 9
4 1 9
这将是您的3-combinations
设置。
>> combs{2}
ans =
2 7 4 1
2 7 4 9
2 7 1 9
2 4 1 9
7 4 1 9
将是您的4-combinations
设置等等。