Octave生成组合子集

时间:2014-02-24 11:01:00

标签: matlab combinations octave

给定一个数字N,我想创建一个x列的矩阵,其中包含N子集的每个组合。例如,如果N16x3,那么我应该得到560行的矩阵,每行将有3列并包含来自数字1到16。 我可以使用函数zzz(N,x)吗? 我将生成大量具有不同Nx值的值,因此for循环会降低速度。

1 个答案:

答案 0 :(得分:2)

只需使用nchoosek功能:

N = 16;
x = 3;
nchoosek(1:N, x)

返回560行,如下所示:

    .    .    .
    .    .    .
    .    .    .
    1    2   13
    1    2   14
    1    2   15
    1    2   16
    1    3    4
    1    3    5
    1    3    6
    1    3    7
    .    .    .
    .    .    .
    .    .    .