gusucode.com > 复杂网络中聚类系数与度度关联系数的matlab Clustering_Coefficient源码程序 > Clustering_Coefficient.m
function ACC=Clustering_Coefficient(Links_M) %计算网络的聚类系数 %输入为网络的邻接矩阵 %输出为标量的网络的聚类系数:ACC %算法的思想是:对每一个节点i找到它的邻居,并记录邻居的下标,然后在这些邻居中找大于0的数的总个数(也就是总边数) %注意Matlab中find()子函数的调用,查找大于零的元素并返回其下标 Links_M0=Links_M; n0=length(Links_M0); %矩阵的维数 CC0=sparse(n0,1); %存放每个节点的所对应的聚类系数 TCC=0; %初始化总的聚类系数 for i=1:n0 i_neighbor=find(Links_M0(i,:)); %查找i点的邻居,就是Links(i,j)=1的点, 返回的是邻居节点下标的组成的向量 i_neighbor_number=length(i_neighbor); %节点i的邻居的数目 if i_neighbor_number>=2 %注如果邻居数为1的话,那么CC(i)=0, 无需计算,所以从邻居数大于等于2开始算 S=Links_M(i_neighbor,i_neighbor); %抽取i节点的所有的邻居所对应的行,列 CC0(i)=sum(S(:))/(i_neighbor_number*(i_neighbor_number-1)); %注意一个节点其度的和等于其变数的两倍,sum(S(:))表示矩阵S所有元素的和=度, %计算节点i的聚类系数 end end TCC=full(sum(CC0)); %总的聚类系数 ACC=TCC/n0; %网络的平均聚类系数