MATLAB生成一个稀疏矩阵,每行随机有两个数不为0

急用,先谢过了^_^每行随机有一个1和一个-1,其他都是0...
2026年09月19日 10:27
有2个网友回答
网友(1):

m=5;n=6;%5行6列
A=sparse(m,n);
for k=1:m
temp=randperm(n);
A(k,temp==1)=1;
A(k,temp==2)=-1;
end

网友(2):

每行随机有两个不为0,一个为1,一个-1,先随机分配这两个数在行的位置,然后随机分配1和-1。然后将矩阵转换为稀疏矩阵,代码为

clear;m=6,n=5 %m×n的矩阵,大小你自定
A=zeros(m,n);
for i=1:m
a=[0 0];
while a(1)==a(2)
a=round(random('unif',1,n,1,2));
end
b=round(round(rand)-0.5);
A(i,a)=[b,-b];
end
B = sparse(A);

greatdiu的代码很直观!ranperm太好用了,学习了。。。