Constructing an Adjacency Matrix from a Matrix/Table

8 次查看(过去 30 天)
I have a matrix, LinkData, whose first 2 columns contains node reference numbers, and the 3rd column contains data that the 2 nodes share. I am trying to create an Adjacency matrix using LinkData. I'm not even completely sure what an Adjacency matrix is let alone construct it. I know that it is supposed to identify which nodes are adjacent to each other (i.e. node 2 is adjacent to node 1 and 3, and node 3 is adjacent to node 2 and 4).
I have tried using accumarray but I do not think I got the right results.
nodesPairs = [LinkData(:,1),LinkData(:,2)] %extract node pairs;
accumarray(nodesPairs+1,1);
Any help would be deeply appreciated!

回答(1 个)

Walter Roberson
Walter Roberson 2016-5-2
Close, but you should use
nodesPairs = [LinkData(:,1),LinkData(:,2)]; %extract node pairs
nodePairs = [nodePairs; fliplr(nodePairs)];
adj = accumarray(nodePairs+1, 1);
You should also give consideration to,
adj = sparse([LinkData(:,1); LinkData(:,2)]+1, [LinkData(:,2); LinkData(:,1)]+1, 1);
If you have a sufficiently recent MATLAB, then consider
G = graph(nodePairs(:,1), nodePairs(:,2));
adj = adjacency(G);

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by