📄 sfng.asv
字号:
function SFNet = SFNG(Nodes, mlinks, seed)
seed = full(seed);
pos = length(seed);
%if (Nodes < pos) || (mlinks > pos) || (pos < 1) || (size(size(seed)) ~= 2) || (mlinks < 1) || (seed ~= seed') || (sum(diag(seed)) ~= 0)
% error('invalid parameter value(s)');
%end
%if mlinks > 5 || Nodes > 15000 || pos > 15000
% warning('Abnormally large value(s) may cause long processing time');
%end
rand('state',sum(100*clock));%%Resets it to a different state each time.
Net = zeros(Nodes, Nodes, 'single');
Net(1:pos,1:pos) = seed;%%生成一个0矩阵,在1到pos位置上放置seed
sumlinks = sum(sum(Net));%%计算网络中边的数量
while pos < Nodes
pos = pos + 1;%%增加一个节点
linkage = 0;%%连边是0
while linkage ~= mlinks%%如果连边不等于mlinks
rnode = ceil(rand * pos);%%现有节点邻接矩阵各元素值最大值取整
deg = sum(Net(:,rnode)) * 2;%%计算每个节点的度
rlink = rand * 1;%%随机概率
if rlink < deg / sumlinks && Net(pos,rnode) ~= 1 && Net(rnode,pos) ~= 1
Net(pos,rnode) = 1;
Net(rnode,pos) = 1;
linkage = linkage + 1;
sumlinks = sumlinks + 2;
end
end
end
clear Nodes deg linkage pos rlink rnode sumlinks mlinks
SFNet = Net;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -