复杂网络聚类系数、平均路径长度等的计算

上一次的WS小世界网络最后可以计算一些相关的复杂网络的参数来进一步呈现其小世界特性,在这里我简单的提供几个参数的计算方法。

聚类系数:

function y=clustering(A)
N=size(A,2);
D=0;
for i=1:N
    C=[];
    for j=1:N
        if A(i,j)==1
            C=[C,j];
        end
    end
    K=size(C,2);
    B=zeros(K);
    for p=1:K
        for q=p:K
            B(p,q)=A(C(1,p),C(1,q));
        end
    end
    D=D+(sum(B(:)))/(K*(K-1)/2);
end
y=D/N;
end

平均路径长度:

function y=Alength(A)
N=size(A,2); 
%求出方阵的阶数
for i=1:N 
    for j=1:N
        if A(i,j)==0&&i~=j
            A(i,j)=inf;
        end
    end
end
%将矩阵初始化,没有连边的两点间距离设为无穷大,自环路径始终为零
%采用弗洛伊德算法求解
for i=1:N-1
    for j=i+1:N
        for k=1:N
            temp=A(i,k)+A(k,j);
            if temp

度分布

function Degree(A)
N=size(A,2);
B=sum(A);
C=zeros(1,N);
D=[];
for i=1:N
    D=[D,i];
    E=B-i;
    y=sum(E==0);
    C(i)=y;
end
figure
f=bar(D,C);
xtips = f(1).XEndPoints;
ytips = f(1).YEndPoints;
labels = string(f(1).YData);
text(xtips,ytips,labels,'HorizontalAlignment','center',...
    'VerticalAlignment','bottom')
title('度分布')
end

你可能感兴趣的:(matlab,图论)