在matlab中从t=0开始的那部分运行不出来,鉴于字符的限制,我把程序代码分成两部分了,高手帮忙解决啊

function matrix = SW()%By 201121250314ticN=20;m=4;% 初始化网络数据p=0.1;% 以概率p=0.1在随机选取的一对结点之间加上一条边 matrix=sparse([],[],[],20,20,0);% 创建一个20*20的全0稀疏矩阵 %建立初始的环状的规则网络%结点网络有N个节点%每个结点向与它最近邻的m个结点连出边%求出邻接矩阵for i=m+1:N-mfor j=i-m:i+mmatrix(i,j)=1;endendfor i=1:mfor j=1:i+mmatrix(i,j)=1;endendfor i=N-m+1:Nfor j=i-m:Nmatrix(i,j)=1;endendfor i=1:mfor j=N-m+i:Nmatrix(i,j)=1;matrix(j,i)=1;endend%逆时针的边重连,从节点到N-m-1for i=1:N-m-1for j=i+1:i+mr=rand(1);% 随机选取一个数if r<=punconect=find(matrix(i,:)==0);% 取出邻接矩阵中的非0元素位置M=length(unconect);% 求出非0元素个数r1=ceil(M*rand(1));% 正向取整matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;% 连接这一对点%matrix(i,j)=0; matrix(j,i)=0;% 加上这个是SW小世界网络endendend%逆时针的边重新连接,从节点N-m到N-1for i=N-m+1:N-1for j=[i+1:N 1:i- N+m]r=rand(1);if r<=punconect=find(matrix(i,:)==0);r1=ceil(length(unconect)*rand(1));matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;%matrix(i,j)=0;matrix(j,i)=0;endendend%逆时针的边重新连接,节点Nfor i=Nfor j=1:mr=rand(1);if r<=punconect=find(matrix(i,:)==0);r1=ceil(length(unconect)*rand(1));matrix(i,unconect(r1))=1;matrix(unconect(r1),i)=1;matrix(i,j)=0;matrix(j,i)=0;endendend%恢复小世界网络的邻接矩阵for m=1:Nmatrix(m,m)=0;% 去掉自身节点形成的环end%存储邻接矩阵%save data matrix;toc %计算程序耗时t=0;while t<=50 j=1;i=1;k=0; while j<=20 if matrix(i,j)~=0 k=k+1; j=j+1; end end f(m)=k/20; p(1)=0.1; q(1)=0.9; a=0.8;b=0.5;c=0.3; q(t+1)=1-p(t+1); G(1)=0;I(1)=0;T(1)=0; y(1)=abs(G(t+1)-I(t+1))/G(t+1); y(2)=abs(G(t+1)-T(t+1))/G(t+1); p(t+2)=p(t+1)+p(t+1)*y(1)-q(t+1)*y(2); q(t+2)=1-p(t+2); I(t+2)=(p(t+2)*a- q(t+2)*b)*f(m); T(t+2)= q(t+2)*c*f(m); G(t+2)=p(t+2)*I(t+2)- q(t+2)*T(t+2); t=t+1;endsemilogx(I)function matrix = SW()%By 201121250314ticN=20;m=4;% 初始化网络数据p=0.1;% 以概率p=0.1在随机选取的一对结点之间加上一条边 matrix=sparse([],[],[],20,20,0);% 创建一个20*20的全0稀疏矩阵 %建立初始的环状的规则网络%结点网络有N个节点%每个结点向与它最近邻的m个结点连出边%求出邻接矩阵for i=m+1:N-mfor j=i-m:i+mmatrix(i,j)=1;endendfor i=1:mfor j=1:i+mmatrix(i,j)=1;endendfor i=N-m+1:Nfor j=i-m:Nmatrix(i,j)=1;endendfor i=1:mfor j=N-m+i:Nmatrix(i,j)=1;matrix(j,i)=1;endend%逆时针的边重连,从节点到N-m-1for i=1:N-m-1for j=i+1:i+mr=rand(1);% 随机选取一个数if r<=p不好意思,上面代码是全的,并且后面的有点重复。
2026年09月23日 22:24
有1个网友回答
网友(1):

这么多行,怎么看呢,好吧,慢慢的来吧。