【发布时间】:2017-04-01 15:18:01
【问题描述】:
我想从图表dataset 计算L = laplacian(G)。我导入了包含两列的数据集:FromNodeId 和 ToNodeId:
# Nodes: 3997962 Edges: 34681189
# FromNodeId ToNodeId
0 1
0 2
0 31
0 73
0 80
0 113619
0 2468556
0 2823829
0 2823833
0 2846857
0 2947898
0 3011654
0 3701688
0 3849377
0 4036524
0 4036525
0 4036527
0 4036529
0 4036531
0 4036533
0 4036534
0 4036536
0 4036537
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
为此,我需要先找到G,所以我使用G = graph(FromNodeId, FromNodeId)。当我这样做时,我得到了这个错误:
>> G = graph(fromNodeId,toNodeId)
Error using matlab.internal.graph.MLGraph
Source must be a dense double array of node indices.
Error in matlab.internal.graph.constructFromEdgeList (line 125)
G = underlyingCtor(double(s), double(t), totalNodes);
Error in graph (line 264)
matlab.internal.graph.constructFromEdgeList(...
我不知道为什么!我可以得到解决方案吗?谢谢。
【问题讨论】:
-
fromNodeID 和 toNodeID 都是全双精度数组吗?试试
FromNodeID=full(double(FromNodeID)); ToNodeID=full(double(ToNodeID));。 “源必须是节点索引的密集双数组。”在我看来,您可能正在输入稀疏数组或单一类型。 -
问题在于记录数据的方式。数组是稀疏的,我已经检查过了。
标签: matlab graph complex-networks