I am a beginner in matlab. So, Could anyone please help me to create an adjacency matrix based on this attached dataset? This set consists of nodes and edges, so I want adjacency matrix where 1 represents connected nodes otherwise 0.
1 view (last 30 days)
Show older comments
Thanks
4 Comments
Guillaume
on 24 Mar 2017
We know what an adjacency matrix is. Rik was asking you to demonstrate that you'd made some effort towards getting your answer, particularly if it's homework.
Accepted Answer
Guillaume
on 21 Mar 2017
Once you've imported your data, the graph and adjacency function are pretty much all you need . However, considering that you've got 892 nodes, that adjacency matrix is going to be big and imposible to visualise.
Two issues are that your text file contains a lot of empty entries (just ,) which needs to be filtered out, and that if you give numeric nodes to graph it expects these to be numbered from 1 to numberofnoes. You can either converts the numbers to char arrays or renumber the nodes(with unique).
edges = dlmread('twitnet.csv');
edges(all(edges == 0, 2), :) = [];
edges = arrayfun(@num2str, edges, 'UniformOutput', false);
g = graph(edges(:, 1), edges(:, 2));
plot(g);
adjm = full(adjacency(g))
4 Comments
Guillaume
on 24 Mar 2017
You really should move to a version of matlab a bit more recent. You're missing out on lots of useful graph functions (in particular, the above will give you a very nice plot of your graph).
Without the nice graph functions, you can still build the adjacency matrix with a bit more effort:
edges = dlmread('twitnet.csv');
edges(all(edges == 0, 2), :) = [];
[uedges, ~, erow] = unique(edges.', 'stable'); %transpose and stable to give the same output as graph
adjm2 = full(sparse(erow(1:2:end), erow(2:2:end), 1, numel(uedges), numel(uedges)));
adjm2 = adjm2 + adjm2.';
More Answers (0)
See Also
Categories
Find more on Graph and Network Algorithms 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!