怎么在matlab中生成0和1的对称矩阵,要求要限制1的个数为20个,且对角线为0?

如题所述

你这里没有给出要生成的矩阵的大小
但是根据要求矩阵必须是5x5以上的方阵
这里以8x8为例子,生成矩阵
根据你的需要设置N,就可以控制生成矩阵的大小

N=8; %矩阵大小假设为8x8,N>=5才能填下20个1
A=zeros(N); %先为矩阵A分配8x8的空间
n=N*(N-1)/2; %除去对角线上三角阵的元素个数
r=randperm(n);%随机排乱1至n,n个自然数
a=(r<=10); %a是长度是n而其中有10个1的随机数列
temp=triu(true(N),1); %temp为除去对角线上三角为1的矩阵
A(temp)=a; %将a填入A的上三角,那么A的上三角随机填入10个1
A=A+A'; %A和A的转置相加,让A的下三角和上三角对称,共有20个1追问

谢谢,搞定了,我现在需要用matlab仿真,但是一点基础都没有,您看您能不能留个联系方式,我有不会的能不能请教一下您?我这边仿真实在是要的太急了

温馨提示:答案为网友推荐,仅供参考
相似回答