How to fix this code? It doesnt give me an edge from 1 to 2! what is the problem in my code?
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponses (2)
Walter Roberson
le 9 Juin 2018
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
le 10 Juin 2018
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 commentaires
Voir également
Catégories
En savoir plus sur Graph and Network Algorithms dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!