复杂网络中小世界网络的MATLAB实现

本文介绍了MATLAB中生成Watts-Strogatz小世界网络的代码,并指出了原代码存在的问题,包括未限制N和K的关系可能导致的重边问题以及beta设置与实际模拟误差。作者提供了一个改进的代码示例,限制了beta的误差,并提及了使用C语言思想在MATLAB中编码的另一种方法。
摘要由CSDN通过智能技术生成

复杂网络中小世界网络的MATLAB实现


最近看了一些网上关于用MATLAB实现小世界网络的代码,大部分人在用MATLAB写代码的时候,用的还是C语言里面的思维,一般都是用for之类的循环语句,编写小世界网络时代码往往就大几十行。实际上MATLAB作为矩阵实验室,在利用数组生成对应的网络时,具有无可比拟的优势,下面会把我参考的代码原地址贴上,也会把我修改后的版本附上。

Mathworks

首先,Mathworks官方就给出了《生成 Watts-Strogatz 小世界图形模型》相关的函数代码和对应图的绘制和参数分析。地址:
https://ww2.mathworks.cn/help/matlab/examples/build-watts-strogatz-small-world-graph-model.html
WS小世界网络函数代码如下:

function h = WattsStrogatz(N,K,beta)
% H = WattsStrogatz(N,K,beta) returns a Watts-Strogatz model graph with N
% nodes, N*K edges, mean node degree 2*K, and rewiring probability beta.
%
% beta = 0 is a ring lattice, and beta = 1 is a random graph.

% Connect each node to its K next and previous neighbors. This constructs
% indices for a ring lattice.
s = repelem((1:N)',1,K);
t = s + repmat(1:K,N,1);
t = mod(t-1,N)+1;

% Rewire the target node of each edge with probability beta
for source=1:N    
    switchEdge = rand(K, 1) < beta;
    
    newTargets = rand(N, 1);
    newTargets(source) = 0;
    newTargets(s(t==source)) 
  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值