如何用Matlab生成只含0,1值的随机矩阵,要求限制1的数量,且对角线上的值都为0.

问题描述:

如何用Matlab生成只含0,1值的随机矩阵,要求限制1的数量,且对角线上的值都为0.
比如矩阵规模为20*20,其中1的数量为43,其余都为0.
1个回答 分类:数学 2014-11-28

问题解答:

我来补答
A=zeros(4,4);
idx=randperm(4*4);
A(idx(1:5))=1;
A(logical(eye(size(A))))=0
再问: 您好,这里面哪个值决定了1的数量呢?谢谢~~
再答: idx(1:5) 5决定了1的数量 不过还有个问题,如果正好对角线上有1的话,最后会被替换成0 需要从dx=randperm(4*4)中去掉对角线的标号
再问: 这个需要怎么操作呢,我完全是小白,希望得到您的帮助,谢谢。
再答: A=zeros(20,20); idx=randperm(20*20); dignum = 1 : 20 : 20*20; c=rem(idx,(20+1)); idx(find(c==1))=[]; A(idx(1:43))=1; A(logical(eye(size(A))))=0
 
 
展开全文阅读
剩余:2000
上一页:画钩的
下一页:速率