# Constructing an Adjacency Matrix from a Matrix/Table

5 views (last 30 days)
Mae on 2 May 2016
Commented: Steven Lord on 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!
##### 0 CommentsShow -2 older commentsHide -2 older comments

Sign in to comment.

### Answers (1)

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

Sign in to comment.

### Categories

Find more on Line Plots in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!