这个函数使用地球上两点之间的经纬度坐标来确定距离(以公里为单位)。距离是用两种距离函数计算的:哈弗斯和毕达哥拉斯。第一个输出基于Haversine函数,对于较长的距离更准确。
--Inputs:
latlon1:起始点latlon [lat lon]
latlon2:终点latlon [lat lon]
——输出:
d1km:用哈弗斯公式计算的距离
d2km:根据毕达哥拉斯定理计算的距离
--Example 1,短距离:
latlon1 = (-43 - 172);
latlon2 = [ - 44 171];
[d1km d2km] =距离(latlon1 latlon2)
d1km =
137.365669065197(公里)
d2km =
137.368179013869(公里)
%d1km近似等于d2km
--Example 2,更长的距离:
latlon1 = (-43 - 172);
latlon2 = (-108);
[d1km d2km] =距离(latlon1 latlon2)
d1km =
10734.8931427602(公里)
d2km =
31303.4535270825(公里)
d1km与d2km有很大的不同(d2km不能用于更远的距离)。
M Sohrabinia(2020)。LatLon距离(//www.tianjin-qmedu.com/matlabcentral/fileexchange/38812-latlon-distance), MATLAB中央文件交换。检索。
非常感谢!
也有内置的功能'距离'和'deg2km',这产生相同的结果,在所有情况下,我已经尝试
谢谢你!它太棒了!
完美的工作。
如何应用输入
@Seb:如实施例中所示的十进制度。感谢评分的代码。
谢谢你的建议,Justin,我会试着回到这个话题,我已经离开Matlab好几年了。我承认我没有在处理异常上花太多的精力,目的是计算正确的距离,我相信它是正确的。
你好,
有个问题,输入是秒还是十进制?
谢谢!
直往前行。方便GPS用户使用
这段代码做了它说它应该,但有两个2分钟的变化,使它更好:
1)将所有操作向量化,这样你就可以放入一个lat,lon坐标列表。基本上,在所有东西的前面加一个“。”。超级简单而且更好
2)增加一张楠的支票。如果两个点太接近,你会得到NaN,而它应该是零。非常容易做到:
> d1km(isnan(d1)) = 0;
我希望这对你有帮助
简单而有效的。做它需要做的事。