2017-10-13 92 views
1

编辑:我也必须有每列的总和等于一个特定的数字!生成具有特定数量的行的二进制矩阵

我想生成一个二进制NxN矩阵,以便每行包含1的特定数字而不重复行。例如:生成具有2个1各行中,并与列值的总和的4×4矩阵等于2,即,产生

enter image description here

因此,每行是唯一的和具有正好2个1和的总和每一列是2错误的回答将是:

B = 

1  1  0  0 
1  0  1  0 
1  0  0  1 
0  1  1  0 

因为列1的总和不等于2(但3)和第4列的总和不等于2(但1)。每列应加起来2.如何在matlab中实现正确的答案?

+0

就像这个评论是不是我的答案:[罗杰斯塔福德](https://de.mathworks.com/matlabcentral/answers/76363-changing-position-of-numbers-in-a-vector)显示了一种非常有效的方式来获得所有可能的排列。即使对于长度> 10,x = [1 1 0 0]; n =大小(x,2); k = sum(x == 1); C = nchoosek(1:n,k); m =大小(C,1); B =零(m,n); B(repmat((1-m:0)',1,k)+ m * C)= 1' – Irreducible

+0

你能解释一下你的编辑吗? – Irreducible

+0

是的,完成了。我添加了一个错误的例子。 –

回答