小世界网络下的雪堆博弈 matlab,matlab关于小世界网络模型的程序

各位高手多多帮忙,以下是我写的关于WS小世界网络模型的代码,图形老是显示不出来,好像还有几处错误,因为是菜鸟,希望各位帮我指点一下。

clear all;

clc;

format long;

k=6;N=200;                   %初始化,k为节点与相邻节点相连的个数,N为节点数

for i=1:14

p(15-i,1)=1/2^(i-1);

end

pp=length(p);

rap=5;

L=zeros(pp,rap);

C=zeros(pp,rap);

for ppp=1:pp

for rap1=1:rap

%p=0时的规则模型

for i=1:N                      %构建矩阵

for j=i+1:i+k/2

j1=j;

if j>N

j1=mod(j,N);       %求余,使之成为一个环

end

A(i,j1)=1;A(j1,i)=1;   %生成的矩阵是相互对称的

end

end

%以下是随机化重连

for i=1:N

for j=i+1:i+k/2

j1=j;

if j>N

j1=mod(j,N);

end

r=rand(1);

if ppp>r

A(i,j1)=0;A(j1,i)=0;

A(i,i)=1;

D=find(A(i,:)==0);   %%%此处有错误。。。。

d=length(D);

d1=fix(rand()*d+1);      %产生随机数

j2=D(d1);                  %得到列坐标的值

A(i,j2)=1;A(j2,i)=1;

A(i,i)=0;

end

end

end

%求平均路径

for i=1:N

A(i,i)=0;

end

find(A(i,i)==1)=inf;

for k=1:N

for i=1:N

for j=1:N

if A(i,j)>A(i,k)+A(k,j)  %Floyd算法求最短路径

A(i,j)=A(i,k)+A(k,j);

end

end

end

end

L(pp,rap1)=sum(sum(A))/(N*(N-1));             %求出平均路径

%求聚类系数

for i=1:N

E=find(A(i,:)==1);           %找出节点i的邻边

if isempty(E)

Ci(i)=0;                 %表示i节点的邻边没有相连的

else

m=length(E);             %表示邻边的个数

if m==1

Ci(i)=0;             %只剩一个节点

else

AA=A(E,E);           %邻边组成的子图

Ci(i)=sum(sum(AA))/(m*(m-1));%每个节点的聚类系数

end

end

end

C(pp,rap1)=mean(Ci);  %聚类系数

end

end

figure

average_L=mean(L,2);

semilogx(p,average_L/average_L(0,0),'--p');

hold on;

average_C=mean(C,2);

semilogx(p,average_C/average_C(0,0),'-rs');

hold on;

legend('L(p)/L(0)','C(p)/C(0)');

title('WS模型');

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值