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