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 次查看(过去 30 天)
Thanks
  4 个评论
Guillaume
Guillaume 2017-3-24
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.
SUNANNA S S
SUNANNA S S 2017-3-27
编辑:Guillaume 2017-3-27
Sorry for the mistake Sir. This is the code that I tried, but this has so many problems.Please help.
function osnToBIS()
clc;
A=csvread('twitnet');
B=unique(A);
m=size(B);
for i=1:size(B)
[r,c]=find(B(i)==A);
for j=1:size(c)
if c(j)==1
c(j)=2;
else
c(j)=1;
end
end
N=A(r,c);
radj=find(adj(:,1)==B);
cadj=find(adj(1,:)==unique(N));
adj(radj,cadj);
end
The error in this program is:
Undefined variable adj.
Error in osnToBIS (line 16)
radj=find(adj(:,1)==B);

请先登录,再进行评论。

采纳的回答

Guillaume
Guillaume 2017-3-21
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 个评论
Guillaume
Guillaume 2017-3-24
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.';

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Graph and Network Algorithms 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by