How to fix this code? It doesnt give me an edge from 1 to 2! what is the problem in my code?
    4 views (last 30 days)
  
       Show older comments
    
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 Comments
Answers (2)
  Walter Roberson
      
      
 on 9 Jun 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
    
      
 on 10 Jun 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 Comments
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!

