matlab中nchoosek是从n个数中取k个数的组合数目。但是我们经常是n个数,每个数有m中取值,那么总共有n^k种组合,例如
对0,1,2三个数生成5个位置的全组合,应该有3*3*3*3*3=243种组合。
那么这种用matlab怎么实现呢?
>> [a,b,c,d,e]=ndgrid(0:2);
>> A=[a(:),b(:),c(:),d(:),e(:)];
>> whos A
Name Size Bytes Class Attributes
A 243x5 9720 double
%再运行一个例子
>> [a,b,c,d]=ndgrid(0:3);
>> A=[a(:),b(:),c(:),d(:)]
A =
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
0 1 0 0
1 1 0 0
2 1 0 0
3 1 0 0
0 2 0 0
1 2 0 0
2 2 0 0
3 2 0 0
0 3 0 0
1 3 0 0
2 3 0 0
3 3 0 0
0 0 1 0
1 0 1 0
2 0 1 0
3 0 1 0
0 1 1 0
1 1 1 0
2 1 1 0
3 1 1 0
0 2 1 0
1 2 1 0
2 2 1 0