matlab - Calculate great circle distance of all matrix elements to all matrix elements -


i have following vector of coordinates

ll = [lat lon]; % 5000 x 2 

and want calculate distances of elements elements using:

[dist, ~] = deg2km(distance[lat1, lon1, lat2, lon2]); 

so final matrix be, guess, 5000x5000. btw function distance comes in mapping toolbox. tried loop one-by-one, takes centuries run.

update

ll =      -79.49583374               40.029166991     -79.50416707               40.029166991     -79.50416707               40.037500324  d = pdist(ll, @(x2,x1)(deg2km(distance(x1(1),x1(2),x2(1),x2(2))))) d =           2014.58795578131          2014.58795578131         0.168797611011563 

while first 2 coordinates:

d = deg2km(distance(ll(1,2),ll(1,1),ll(2,2),ll(2,1))) d =          0.709531880098433 

----

any please?

i didn't realise distance matlab function, sorry. try this:

d = pdist(ll, @(x1,x2) (distance(x1(:,1),x1(:,2),x2(:,1),x2(:,2)))) 

what @(x1,x2) (distance(x1(:,1),x1(:,2),x2(:,1),x2(:,2))) do?

it's anonymous function expects 2 inputs, x1 , x2, , each should n-by-2. let's pretend n equals 1. pdist give our anonymous function every different pair of rows ll inputs x1 , x2. row ll of form [lat, lon] , getting 2 such rows. know distance requires distance(lat1,lon1,lat2,lon2). if x1 row of ll it's [lat1, lon1] x1(1) lat1 , x1(2) lon2. same x2 , [lat2,lon2].

so our anonymous function doing converting distance function taking 4 inputs, more standard formed matlab distance function accepts 2 inputs.

edit:

as swapping latitudes , longitudes, might work you:

d = pdist(ll, @(x1,x2) (distance(x1(:,2),x1(:,1),x2(:,2),x2(:,1)))) 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -