2011-11-10 6 views
3

Je fais un algorithme dijkstra en utilisant Matlab. Voici mon codeAlgorithme dijkstra utilisant Matlab

W = [10 8 5 3 7 2 4 6 21]; 
DG = sparse([1 1 1 2 2 3 4 5 6],[2 4 3 4 5 6 6 6 1],W) 

h = view(biograph(DG,[],'ShowWeights','on')) 

[dist,path,pred] = graphshortestpath(DG,1,6) 

set(h.Nodes(path),'Color',[1 0.4 0.4]) 
edges = getedgesbynodeid(h,get(h.Nodes(path),'ID')); 
set(edges,'LineColor',[1 0 0]) 
set(edges,'LineWidth',1.5) 

Le problème est de savoir comment puis-je obtenir les lignes de couleur rouge nœuds et les bords du chemin le plus court « reset ». par exemple, je veux que ce soit [dist,path,pred] = graphshortestpath(DG,2,3) mais le graphique montre toujours le

[dist,path,pred] = graphshortestpath(DG,1,6). 

Répondre

1

Cela fera:

set(h.edges, 'LineColor', [0.5 0.5 0.5]) 
set(h.edges, 'LineWidth', 0.5) 
set(h.nodes, 'Color', [1 1 0.7]) 

Vous pouvez consulter toutes les autres propriétés que vous pouvez changer simplement en faisant get(h).

Il y a aussi quelques bonnes informations en ligne sur la définition des propriétés des objets Biograph:

http://www.mathworks.com/help/toolbox/bioinfo/ref/setbiograph.html

Questions connexes