提问人:AMGEO 提问时间:5/16/2023 最后编辑:AMGEO 更新时间:5/17/2023 访问量:47
无向图的邻接矩阵(Arxiv广义相对论的协作网络)
Adjacency Matrix for Undirected Graph (Collaboration network of Arxiv General Relativity)
问:
我想使用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=[])
答: 暂无答案
评论
data
data_u = unique(data,'rows');
data = readmatrix('CA-GrQc.txt');
G = graph((data(:,1), data(:,2)); A = adjacency(G);