无向图的邻接矩阵(Arxiv广义相对论的协作网络)

Adjacency Matrix for Undirected Graph (Collaboration network of Arxiv General Relativity)

提问人:AMGEO 提问时间:5/16/2023 最后编辑:AMGEO 更新时间:5/17/2023 访问量:47

问:

我想使用MATLAB为以下链接中的无向图数据创建邻接矩阵。

当我应用“图形”函数时,我得到矩阵有重复边的错误。当我调查行的唯一性时,所有行都是唯一的。当我试图找到彼此镜像的行时(因为在无向图中它们仍然被认为是重复的),我没有找到任何镜像行。所以,我在这里问这个问题,如果有人能帮我获得这个特定数据的邻接矩阵,我非常感谢。

有两列的矩阵“data”包含节点的“From-To”信息。因此,我首先使用以下命令来获取邻接矩阵:

% Create a graph object from the node numbers
G = graph (data (:,1), data (:,2));

% Find the adjacency matrix of the graph
A = adjacency (G);

然后,我在MATLAB中收到以下错误消息:

Error using matlab.internal.graph.MLGraph
Duplicate edges not supported.

Error in matlab.internal.graph.constructFromEdgeList (line 125)
G = underlyingCtor(double(s), double(t), totalNodes);

Error in graph (line 287)
                matlab.internal.graph.constructFromEdgeList(...

然后,我尝试了这个来查找重复的行

[~, ia, ic] = unique (data,'rows');

% Find the indices of the duplicate rows of A
dupRows = setdiff (1:size (A,1), ia (accumarray (ic,1)<=1));

然后,我没有得到任何重复的行。

然后我尝试了以下代码来查找相互镜像的行:

[~, mirror_idx] = ismember (data,fliplr (data),'rows');
data (mirror_idx,:) = [];

它从字面上消除了矩阵“data”的所有行,(即data=[])

MATLAB 图形 邻接矩阵 向图

评论

1赞 beaker 5/16/2023
我们需要看到一些代码,显示如何加载数据以及如何创建图形。
0赞 AMGEO 5/17/2023
当然,我在问题中包含了使用的代码。
0赞 beaker 5/17/2023
我根本不希望创建邻接矩阵,因为错误出在 Graph 对象的构造函数中。有你期望的尺寸吗?给你一个不同的尺寸吗?datadata_u = unique(data,'rows');
1赞 magnesium 5/18/2023
不确定此错误来自哪里。我能够从链接下载数据,使用(生成 28980x2 矩阵)导入它,然后使用您上面编写的相同代码制作图形和邻接矩阵(对我来说效果很好)。data = readmatrix('CA-GrQc.txt');G = graph((data(:,1), data(:,2)); A = adjacency(G);
0赞 AMGEO 5/20/2023
谢谢,因为现在我知道它确实有效,这是一个很大的帮助。您使用的是哪个版本的 MATLAB?我尝试了 2017a。

答: 暂无答案