代码之家  ›  专栏  ›  技术社区  ›  Bigbohne

Matlab划分问题

  •  2
  • Bigbohne  · 技术社区  · 16 年前

    我的脑袋在为我的问题寻找一个算法时被绊住了。

    N 数字(假设4)和我想要所有的X分区(X=N/2)

    例子:

    {1,2,3,4}的2-划分是:(1,2)(1,3)(1,4)(2,3)(2,4)(3,4)[简单地说:所有组合]

    我不知道如何生成这些组合。如果你们中有人有想法(我不在乎用什么语言)。伪代码已经足够了。我不在乎它是迭代的还是显式的)。

    顺致敬意, 比博恩

    3 回复  |  直到 14 年前
        1
  •  5
  •   tauran    16 年前

    Matlab具有以下功能:

    http://www.mathworks.com/help/techdoc/ref/nchoosek.html

    >> x = [1,2,3,4]
    
    x =
    
    1     2     3     4
    
    >> nchoosek(x, 2)
    
    ans =
    
     1     2
     1     3
     1     4
     2     3
     2     4
     3     4
    

    像maxwell这样的循环构造在matlab中非常慢。。。

        2
  •  1
  •   Chenna V    16 年前

    myNums = [2,3,6,5];
    for i = 1:size(myNums,2)
        combinationsSet{i} = nchoosek(myNums,i);
    end
    
        3
  •  0
  •   maxwellb    16 年前
    foreach i in SET
        foreach j in SET
            if i < j, SAY "I have a partition ($i,$j)"
        NEXT j
    NEXT i
    

    这取决于您的集合的迭代特性,并在N^2时间内运行。

    对于Matlab,请查看提供给您的函数, 例如 combnk