岁月静好。 发表于 2013-6-13 09:27

矩阵,求帮忙解决~

产生一个100行100列的矩阵,要求里面元素只含0和1,每行和每列只有3个1
还是这个没办法实现?

gt93 发表于 2013-8-25 22:10

楼主好~
代码一:clc
clear all
A=ones(3);
N=100;
for i=1:N-3
    M=length(A(1,:));
    for j=1:M
        AA(j,j+1)=0;
        AA(j,1:j)=A(j,1:j);
        AA(j,j+2:M+1)=A(j,j+1:end);
    end
    AA(M+1,:)=3-sum(AA);
    A=AA;
end
B=zeros(M+1);
B1=zeros(M+1);
B2=randperm(M+1);
B3=randperm(M+1);
for j=1:M+1
    B(j,B2(j))=1;
    B1(j,B3(j))=1;
end
A=B1*A*B代码二:A=zeros(100,100);
for j=1:100
A(j:j+2,j)=ones(3,1);%超过100的j+1,j+2取余数
end

一匹狼 发表于 2013-8-26 08:16

gt93 发表于 2013-8-25 22:10 static/image/common/back.gif
楼主好~
代码一:代码二:

代码二生成的A是102*100矩阵

一匹狼 发表于 2013-8-26 08:21

gt93 发表于 2013-8-25 22:10 static/image/common/back.gif
楼主好~
代码一:代码二:

也不是每行和每列只有3个1

天空和海 发表于 2013-8-26 10:46

gt93 发表于 2013-8-25 22:10 static/image/common/back.gif
楼主好~
代码一:代码二:

围观,学习了!

gt93 发表于 2013-8-26 14:23

一匹狼 发表于 2013-8-26 08:16 static/image/common/back.gif
代码二生成的A是102*100矩阵

呵呵,剩下的几个可以赋值,你真的很认真呀,此处仅修复成100*100方正。clc;clear
A=zeros(100,100);
for j=1:100
A(j:j+2,j)=ones(3,1);%超过100的j+1,j+2取余数
end
A(101,:)=[];

qq826766909 发表于 2013-8-26 16:31

学习一下。。

逆___行 发表于 2013-8-26 20:29

围观,围观

灯皇 发表于 2013-8-28 08:26

碉堡了              

岁月静好。 发表于 2013-8-29 10:54

gt93 发表于 2013-8-25 22:10 static/image/common/back.gif
楼主好~
代码一:代码二:

谢谢了~~呃呃,在Matlab提问的那个人也是我,大家都很给力~
页: [1]
查看完整版本: 矩阵,求帮忙解决~