function [C,aver_C,max_C,min_C]=Clustering(A)
%%求聚类系数
%A--------------邻接矩阵
%C--------------聚类系数
%aver_C---------整个网络图的平均聚类系数
A=xlsread('name.xls');
%A=xlsread('hometown.xls');
%A=xlsread('dialect.xls');
N=size(A,2);
C=zeros(1,N);
for i=1:N
a=find(A(i,:)==1); %寻找子图的邻居节点
b=find(A(:,i)==1);
m=union(a,b');
k=length(m);
if k==1
disp(['第',int2str(i),'个节点只有一个邻居节点,其聚类系数为0']);
C(i)=0;
else
B=A(m,m);
C(i)=length(find(B==1))/(k*(k-1));
end
end
aver_C=mean(C);
max_C=max(C);
n=find(C==0);
a=C;
a(n)=inf;
min_C=min(a);
figure;
bar([1:N],C);
xlabel('学生节点编号');
ylabel('各节点的聚类系数K');
title('knowing someone name节点的聚类系数分布图');
//求点的聚类系数
%计算图的core
function cores=coreness(graphmat)
graphmat=xlsread('name.xls');
n=size(graphmat,1);
deg=zeros(1,n);
ndin=zeros(1,n);
ndout=zeros(1,n);
%for i=1:N
% ndin(i)=sum(A(:i));
% ndout(i)=sum(A(i:));
%end
ndin=sum(graphmat); %节点的入度
ndout=sum(graphmat');%节点的出度
deg=ndin+ndout;
[incdeg,nodeind]=sort(deg); %节点的度数从小到大排列(incdeg),以及记录初始位置
vert=[incdeg;nodeind]; %将二者存到矩阵里
for i=1:n
k=1;
for j=1:n
if graphmat(i,j)
neighbour{i}(k)=j;%找出节点i的所有邻居点,并且记录neighbour中,第J各节点的度为K
k=k+1;
end
end
end
if deg(n)==0
neighbour{n}=[];
end
if prod(deg)==0
j=0;
for i=1:n
if deg(i)==0
j=j+1;
N(j)=i;%删除孤立节点
end
end
j=size(N,2);
for t=1:j
vert(:,t)=[];
end
end
m=size(vert,2);
for i=1:m
cores(vert(2,1))=vert(1,1)-1;
for j=1:size(neighbour{vert(2,1)},2)
if deg(neighbour{vert(2,1)}(j))>vert(1,1)
deg(neighbour{vert(2,1)}(j))=deg(neighbour{vert(2,1)}(j))-1;
end
end
vert(:,1)=[];
for k=1:(m-i)
vert(1,k)=deg(vert(2,k));
end
vert=sortrows(vert')';
end
for i=1:n
if deg(i)==0
cores(i)=0;
end
end
figure;
bar([1:n],cores);
xlabel('学生节点编号');
ylabel('各节点的coreness');
title('knowing someone name 节点的coreness分布图');
//求点的core
其他的网上资源较多就不上传了