How get adjacency matrix from this code
Show older comments
N = input('no. of Nodes');
p = input('Give the possibility');
m = (n*(n-1))/2;
degree=zeros(N,1);
position=zeros(N,2);
for m=1:N
position(m,1)=cos(m/N*2*pi);
position(m,2)=sin(m/N*2*pi);
end
hold on;
plot(position(:,1),position(:,2),'d')
for m=1:N
for n=m+1:N
if(rand(1,1)<p)
degree(m,1)=degree(m,1)+1;
degree(n,1)=degree(n,1)+1;
plot(position([m,n],1),position([m,n],2))
end
end
end
hold off;
Answers (1)
I would recommend to use the inbuilt functions for working with graphs - it makes life much easier:
N = input('no. of Nodes');
p = input('Give the possibility');
% Make adjacency matrix
idx = find(triu(ones(N),1));
V = rand(((N-1)*N)/2,1)<p;
A = zeros(N);
A(idx) = V;
A = A + triu(A,1)';
% create and plot undirected graph object
g = graph(A)
plot(g)
A good start for reading is here:
4 Comments
Konstantinos koutsikakis
on 1 Nov 2020
Stephan
on 1 Nov 2020
Like your code it produces random edges between knots with a given probability.
Konstantinos koutsikakis
on 1 Nov 2020
Walter Roberson
on 1 Nov 2020
https://www.mathworks.com/help/matlab/ref/matlab.graphics.chart.primitive.graphplot.layout.html#d122e485652
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!