我有一个1700 x 3的阵列,其纬度,经度和海拔高度都在米以上。像这样:
51.2551649606487 7.15089717516404 153.110000000000
51.2552453948075 7.15086528446721 150.160000000000
51.2552903318980 7.15086348124900 150.200000000000
我想使用Haversine公式计算连续的纬度Lon坐标之间的距离,因为我无权访问MATLAB映射工具箱(https://de.mathworks.com/matlabcentral/fileexchange/38812-latlon-distance)。
我的问题是,我应该如何更改给定的代码,以直接从数组中读取所有1700个坐标?
我阅读/检查了以下链接:MATLAB function to calculate distance between two coordinates (latitude and longitude)。但这并没有告诉我如何立即从数组中读取所有1700个坐标。
在此先感谢您谁愿意帮助我!
最诚挚的问候
答案 0 :(得分:0)
如果我正确理解了这个问题,则应该能够将数据分成3 1700 x 1数组:纬度,经度和海拔。然后在这三个数组上应用Haversine公式。 (尽管典型的haversine功能不能说明海拔)
coordinates; %1700 x 3 array
latitudes=coordinates(:,1);
longitudes=coordinates(:,2);
elevations=coordinates(:,3);
lat1=0; %coordinates to compare to
long1=0;
earthRadius=6371000;
a=sind((latitudes-lat1)./2).^2 + cosd(latitudes).*cosd(lat1).*sind((longitudes-long1)./2).^2;
c=atan2(sqrt(a),sqrt(1-a));
distances=c*earthRadius;%in meters