我正在尝试使用nchoosek(v,k)
来获得4个值随机分布在4个位置的四个值的所有可能组合。我的目标是得到这个:
[4 0 0 0;
0 4 0 0;
0 0 4 0;
0 0 0 4;
3 1 0 0;
3 0 1 0;
3 0 0 1;
1 3 0 0;
0 3 1 0;
0 3 0 1;
1 0 3 0;
0 1 3 0;
0 0 3 1;
1 0 0 3;
0 1 0 3;
0 0 1 3;
2 2 0 0;
2 0 2 0;
2 0 0 2;
0 2 2 0;
0 2 0 2;
0 0 2 2;
2 1 1 0;
2 1 0 1;
2 0 1 1;
1 2 1 0;
1 2 0 1;
0 2 1 1;
1 1 2 0;
1 0 2 1;
0 1 2 1;
1 1 0 2;
1 0 1 2;
0 1 1 2;
1 1 1 1];
但是,我不确定如何正确输入v
和k
来实现nchoosek()
。无论我放入v
,我也得到了输出。
nchoosek([1,1,1,1], 4)
[1,1,1,1]
nchoosek([1,0,0,0], 4)
[1,0,0,0]
nchoosek([4,0,0,0], 4)
[4,0,0,0]
nchoosek([1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1], 4)
Error using nchoosek (line 29)
The first argument has to be a scalar or a vector.
简而言之,我没有获得nchoosek(v,k)
的输入和输出。有人知道怎么做吗?我looked up some在这里提问,但他们并没有帮助我。
答案 0 :(得分:3)
[d1,d2,d3,d4]=ndgrid(0:4,0:4,0:4,0:4);
d = d1+d2+d3+d4;
i = find(d==4);
[d1(i),d2(i),d3(i),d4(i)]