This function works fine.
I call it many times as dijkstra(A,C,1) into an optimization function.
Nevertheless, the Matlab profiler halt me with warnings about the use of sparse functions, and indexing sparse matrices.
I am using the code below to define a grid and find the shortest point between two points. I am also defining a polygon as a keep out area. How can I change the cost of the paths inside the polygon so that the connection line goes around the keep out are?
I have Identified the points that are inside the polygon.
clear all;close all;
[xgrid ygrid]= meshgrid (-5:0.5:5,-5:0.5:5);
L = linspace(0,2.*pi,11); xv = 3*sin(L);yv = 3*cos(L);
in = inpolygon(xx,yy,xv,yv);
n = size(xy,1); A = zeros(n); %xy = 10*rand(n,2)
tri = delaunay(xy(:,1),xy(:,2));
I = tri(:); J = tri(:,[2 3 1]); J = J(:);
IJ = I + n*(J-1); A(IJ) = 1 ;
[cost,path] = dijkstra(A,xy,3,437) ;
gplot(A,xy,'k.:'); hold on;
% for k = 1:n, text(xy(k,1),xy(k,2),[' ' num2str(k)],'Color','k'); end
Vishal, in your case, you could provide the inputs as follows:
C = zeros(4);
C(1,2) = 10;
C(1,3) = 20;
C(2,4) = 30;
C(3,4) = 40;
A = logical(C);
[cost,path] = dijkstra(A,C,1,4)
And the output you would get is:
1 2 4
I need to use this. I am getting confused with the input form that should be given.
I have 4 simple nodes.
1 2 3 4
1->2: weight = 10
1->3: weight = 20
2->4: weight = 30
3->4: weight = 40
i need to find path from 1 to 4.
Can you tell me how to give input.