Matlab-集合子集的组合

时间:2014-11-04 05:58:22

标签: arrays matlab set combinations subset

您好我可以知道如何使用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}

感谢

1 个答案:

答案 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设置等等。