复杂网络建模 社交网络图的一些计算代码(不全欢迎补充)MATLAB
2014-12-03 17:42
627 查看
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
其他的网上资源较多就不上传了
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
其他的网上资源较多就不上传了
相关文章推荐
- 【数学建模】图与网络 提纲 & matlab代码
- PTA 7-12(图) 社交网络图中结点的“重要性”计算(30 分) 30分代码
- 一些常用的辅助代码 (网络收藏)
- 通过web服务传递复杂类型数据的一些尝试和心得(欢迎讨论)
- 计算机网络中的一些计算
- 用MASM32按Time Protocol(RFC868)协议编写网络对时程序中的一些有用的函数代码
- 图像处理与视觉计算的网络资源和一些评述
- 做项目经理的一些管理经验,欢迎大家补充。
- 欢迎加入复杂网络QQ群:72157317
- 一些常用的辅助代码 (网络收藏)
- 杭州电子科技大学理学院学生科研立项中期检查-股票网络的复杂网络建模分析
- 一些常用的辅助代码 (网络收藏)
- 网络上的一些代码资源
- 一些常用的辅助代码 (网络收藏)
- matlab 通用神经网络代码
- 一些无聊的代码之一:JAVA中的日期计算
- 网络上的一些代码资源
- Matlab中计算程序运行时间的代码
- 把遇到过的对.Net线程的一些问题和误解集中起来和大家分享,也希望大家能一起补充,热烈欢迎讨论(转)
- 图像处理与视觉计算的网络资源和一些评述