【问题标题】:Matlab function to compute average neighbor degreeMatlab函数计算平均邻居度
【发布时间】:2014-10-31 16:17:25
【问题描述】:

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

network-X 包中的 python 中有一个相同的功能。所以我想知道matlab中是否有类似的功能。

***********编辑******************

我无法将其转换为邻接矩阵。这实际上会占用太多空间。

我所拥有的是以下边缘列表(实际上这只是一个测试矩阵..实际的矩阵非常大),因为节点 2 到节点 1 之间有一条边缘,依此类推.. 是的,这是一个 un -有向图

2 1
3 1
4 1
5 1
1 2
3 2
4 2
1 3
2 3
5 3
1 4
2 4
5 4
1 5
3 5
4 5

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

【问题讨论】:

  • 你如何表示图表?作为邻接矩阵或邻接列表?您在这里提供的信息很少。

标签: matlab graph mean degrees neighbours


【解决方案1】:

即使对于大型边列表,您也可以使用 Matlab 使用sparse 矩阵创建适合内存的邻接矩阵:

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

每个节点的邻居度是邻居的个数

nd = sum( A, 2 ); %// degree of each node

要计算平均相邻度,可以构造另一个稀疏矩阵,每个条目中存储相邻度

ndM = sparse( el(:,1), el(:,2), nd( el(:,2) ), n, n ); 

现在可以根据新矩阵计算平均相邻度数

av = full( sum( ndM, 2 ) ./ nd );

【讨论】:

  • @Shai 实际上,我可以获得网络的平均度数。我想找到的是网络的平均度数邻居。抱歉,它仍然没有回答我的问题。
  • 太棒了 :) 效果很好!我不知道 ndM = sparse( el(:,1), el(:,2), nd( el(:,2) ), n, n );和 av = full( sum( ndM, 2 ) ./ nd );你能指出我的资源吗?
  • @BoyLittUp 我建议你看看full(ndM)full(nd) 计算的小玩具例子,这个应该很清楚了。
  • @BoyLittUp nd( el(:,2) ) 创建一个向量,其中包含所有相邻节点的度数 (nd)(存储在 el(:,2) 中)。
  • @BoyLittUp 很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2020-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2021-11-14
  • 2021-09-28
相关资源
最近更新 更多