(2015-04-13 22:22:57)[编辑][删除]
转载▼
标签:
教育
文化
复杂网络研究中gml格式数据转换成邻接矩阵的
方法
1.首先到Newman的主页/~mejn/netdata/
下载Gephi软件,这个需要java环境。
图1.Newman主页上的Gephi
图2.点击Newman主页Gephi后的页面2.然后打开安装好的Gephi软件
图3. 安装好的Gephi软件
图4. 打开后的软件界面
3.然后点击:文件-----打开-----选中一个gml格式的文件------打开-----确定
图5.选择文件
图6.打开文件的选择
图7.打开文件后的界面4.点击:数据资料(图7左上角红圈内)-----边-----输出表格
图8.数据资料界面
图9.输出表格界面
5.只选择Source和Target-----点击确定-----保存到桌面。
此时在桌面你会发现一个电子表格(格式是csv),双击打开它。
删除有汉字的第一行。
这样就得到了这个网络的邻接表。
图10.保存到桌面的输出文件
图11.打开后的界面
6.打开matlab-----新建一个文件重命名为b-----复制电子表格中的邻接表到新建的文件b中(图12)
图12.复制邻接表到b中7.新建函数,代码如下
function b=ainc2adj(x)% 邻接表生成邻接矩阵
if min(x)==0;
x=x+1;
end
d=length(x);
a=max(max(x));
b=zeros(a,a);
for i=1:d
if x(i,1)==x(i,2);
b(x(i,1),x(i,2))=0;
else
b(x(i,1),x(i,2))=1;
b(x(i,2),x(i,1))=1;
end
end
8.在Command Window 中运行函数
a=ainc2adj(b); 最后就输出邻接矩阵a了。
图13.运行函数
图14.得到的邻接矩阵a
提示:
1.这是自己捉摸出来的笨方法,如果有大神看到这篇博文,请指点个比较简单的方法方便大家科研。
2.这个软件也可以读取它输出的csv格式的文件,也就是那个邻接表,不过里边有汉字的第一行要删除。
也就是说,读者如果想用Gephi软件读取自己的一个有邻接矩阵的网络,应该先把邻接矩阵转换成邻接表,然后把邻接表粘贴到csv格式的文件中,然后用Gephi打开就行了。
最下面是邻接矩阵转邻接表的matlab代码(特别简单,自己也可以写)。
3.大家可以百度Gephi软件教程,有很多。
4.如果博文里边有错误,请大家指正。
对于可能的错误先道个歉。
邻接矩阵转邻接表matlab代码:
function [ biao ] =adj2binc(a)%输入邻接矩阵,输出邻接表
n=size(a,1);
biao=[];
for i=1:n;
for j=1:n
if a(i,j)==1;
biao=[biao;i j];
a(j,i)=0;
end
end
end
end
小弟是研究复杂网络社区检测的,希望可以向大家学习,进步。