Constructing an Adjacency Matrix from a Matrix/Table

3 Ansichten (letzte 30 Tage)
Mae
Mae am 2 Mai 2016
Kommentiert: Steven Lord am 21 Jul. 2018
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!

Antworten (1)

Walter Roberson
Walter Roberson am 2 Mai 2016
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);
  2 Kommentare
Mohammad Bhat
Mohammad Bhat am 21 Jul. 2018
Then, how to plot the graph..
Steven Lord
Steven Lord am 21 Jul. 2018
If you made a graph as per the last section of code in Walter's answer, just plot it.
plot(G)

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Specifying Target for Graphics Output finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by