How to fix this code? It doesnt give me an edge from 1 to 2! what is the problem in my code?
1 次查看(过去 30 天)
显示 更早的评论
p = [3,2,1];
for i = 1:length(p)
last_element = p(end);
G = graph();
H = addnode(G,last_element);
p(end) = []; % REMOVING THE LAST ELEMENT ONCE ADDED TO THE GRAPH so in 2nd iteration p = [3,2]
disp(p);
if(isempty(p))
break;
else
disp(p(end));
V = addedge(G,last_element,p(end));
end
plot(V);
end
0 个评论
回答(2 个)
Walter Roberson
2018-6-9
I do not see any "hold" command, so the plot(V) is going to overwrite the plotted graph in each iteration.
You are deliberately creating a new graph() in each iteration of i, so it seems that you do not want to create one graph that has all of the edges together, only one edge at a time, but you are not displaying the individual graphs into different figures or subplots...
Steven Lord
2018-6-10
You want a graph with three nodes and two edges, those edges being (3, 2) and (2, 1)? You can do this with one call to graph.
p = [3 2 1];
sources = p(1:end-1)
targets = p(2:end)
g = graph(sources, targets)
plot(g)
You don't necessarily need to create the intermediate arrays sources and targets, I just did it so you can see what they contain.
p = [3 2 1];
g = graph(p(1:end-1), p(2:end))
plot(g)
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!