问题
我想从我的EdgeList创建一个无向图。但是因为我的Edgelist不是一个密集的双阵列。我耗尽了包含零的所有边连接,但我想问题是边缘列表不是常量,这是我的边缘列表的开始:
Edgelist=
10965 10879
10965 10962
10965 10966
10965 10967
11382 11360
11382 11381
11382 11384
11382 11553
11383 11380
11383 11381
11383 11384
11383 11389
所以我尝试创建一个邻接矩阵,希望试图阻止source is not a dense double array
错误
我使用的代码
EdgeList=unique(EdgeList,'rows');
sz = max(EdgeList(:));
A = sparse(EdgeList(:,1), EdgeList(:,2), 1, sz, sz);
G=graph(A);
现在我收到下一个错误
邻接矩阵必须是对称的。
我没有想法如何从这样的数据集创建图表,任何人都可以帮忙吗?
答案 0 :(得分:3)
如果2
与3
A(2,3) == 1
相邻,则必须将邻接矩阵创建为对称,因此3
也必须与2
相邻{1}}:A(3,2) == 1
。您已经构建了邻接矩阵,使得每个边只有一个单向关系。
您可以通过将EdgeList
的其他列附加到sparse
的每个输入来更正此问题:
A = sparse([EdgeList(:,1); EdgeList(:,2)], [EdgeList(:,2); EdgeList(:,1)], 1);
或者,您可以转置A
,并使用逻辑或(A
)将其与|
的初始版本合并,以强制它对称。
A = A.' | A;