首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算平均近邻度的Matlab函数

计算平均近邻度的Matlab函数
EN

Stack Overflow用户
提问于 2014-09-07 05:41:03
回答 1查看 1.4K关注 0票数 2

我尝试在matlab中搜索一个函数,该函数给出了图的平均邻域度

在network包中的python中有一个相同的函数。所以我想知道matlab中是否有类似的函数。

***********Edit****************

我不能把它转换成邻接矩阵。这实际上会占用太多的空间。

我有以下的边缘列表(实际上这只是一个测试矩阵..。例如,在节点2到节点1之间有一个边缘,等等。是的,这是一个无向图。

2 1

3 1

4 1

5 1

[经]1 2

3 2

4 2

1 3

2 3

5 3

[1]1 4

2 4

5 4

1 5

3 5

4 5

现在,我需要一个函数来计算这个图的平均邻域度(平均近邻度)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-07 06:16:22

即使对于大的边缘列表,您也可以使用Matlab创建一个邻接矩阵,使用sparse矩阵将其放入内存中:

代码语言:javascript
复制
el = [2 1; 3 1; ... ]; %// edge list, I put only a tiny sample here...
n = max( el(:) ); %// number of nodes in the graph
A = sparse( el(:,1), el(:,2), 1, n, n ); % //sparse adjacency matrix

每个节点的邻域度是相邻节点的数目。

代码语言:javascript
复制
nd = sum( A, 2 ); %// degree of each node

要计算平均邻域度,可以用存储在每个条目中的邻域度来构造另一个稀疏矩阵。

代码语言:javascript
复制
ndM = sparse( el(:,1), el(:,2), nd( el(:,2) ), n, n ); 

现在可以从新的矩阵计算平均近邻度。

代码语言:javascript
复制
av = full( sum( ndM, 2 ) ./ nd );
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25707419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档