This functions finds distance (in km) between two points on Earth using latitude-longitude coordinates of the two points. Distance is calculated using two distance funstions: Haversine and Pythagoran. The first output is based on Haversine function, which is more accurate especially for longer distances.
latlon1: latlon of origin point [lat lon]
latlon2: latlon of destination point [lat lon]
d1km: distance calculated by Haversine formula
d2km: distance calculated based on Pythagoran theorem
--Example 1, short distance:
%d1km approximately equal to d2km
--Example 2, longer distance:
d1km is significantly different from d2km (d2km is not able to work for longer distances).
How to apply inputs
@Seb: decimal degrees as shown in the examples. Thanks for rating the code.
@Justin: thanks for the suggestions Justin, I will try to get back to this, have been away from Matlab for the last couple of years. I acknowledge I have not spent a lot work on handling the exceptions, the aim was to calculate the correct distance which I believe it does.
Just a question, are inputs in deg min sec or decimal degrees?
Straight forward. Handy function for GPS users
This code does what it says it should but there are two 2-minute changes to make it much better:
1) make all operations vectorized so you can put a list of lat,lon coordinates. Basically, add a "." before everything. Super easy and much better
2) Add a check for NaN's. If two points are too close, you get NaN when it should be zero. Very easy to do:
>> d1km(isnan(d1km)) = 0;
I hope this helps
Simple but effective. Does just what it needs to do.