【问题标题】:Matlab- Combinations for subsets of a setMatlab-集合子集的组合
【发布时间】:2014-11-04 05:58:22
【问题描述】:

您好,我可以知道如何使用 matlab 执行此操作吗? 我试过 nchoosek 但只适用于一种组合。我想在数组中一起输出

令 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,e}
{a,d,e}
{a,b,c,d}
{a,b,c,e}
{a,c,d,e}
{a,b ,c,d,e}

谢谢

【问题讨论】:

    标签: arrays matlab set combinations subset


    【解决方案1】:

    您可以在那里使用循环或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 设置等等。

    【讨论】:

    • 我想你的意思是最后一行的 4-combinations set>>。
    • @ParagS.Chandakkar 抱歉,我就是这个意思。感谢您指出这一点!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多