deg2km命令在matlab中不计算两点之间的距离

deg2km命令在matlab中不计算两点之间的距离,matlab,Matlab,我试图计算两个地理坐标之间的距离,我想把地理坐标转换成公里。因此,我使用了deg2km函数。然而,我意识到这不是正确的转换点 例如,我使用了这两点 p_x=[5; 10]; %degree p_y=[8; 16]; %degree pos_y=deg2km(p_y,6378); pos_x=deg2km(p_x,6378); 它返回为: pos_x= [556.58549846099 1113.17099692198] pos_y= [890.53679753

我试图计算两个地理坐标之间的距离,我想把地理坐标转换成公里。因此,我使用了
deg2km
函数。然而,我意识到这不是正确的转换点

例如,我使用了这两点

p_x=[5; 10];        %degree
p_y=[8; 16];        %degree
pos_y=deg2km(p_y,6378);
pos_x=deg2km(p_x,6378);
它返回为:

pos_x= [556.58549846099 1113.17099692198]   
pos_y= [890.536797537587 1781.07359507517]
当我计算这些点之间的距离(
sqrt((556.5-1113.2)^2+(890.5368-1781.1)^2)
)时,我得到的距离为:1050.2464

但是我检查了谷歌地图和其他网站,它应该是1042km

你有什么建议来正确计算距离和点的公里数吗

提前谢谢

编辑为:

我有点(度),我需要将它们转换为公里,并计算点之间的距离

LAT=[41.000173;41.010134]*pi/180; 
LON=[28.995882;28.995584]*pi/180;
我用这个代码来计算距离。它计算正确。 但是我不能把我的点转换成公里

LAT=[41.000173;41.010134]*pi/180; 
LON=[28.995882;28.995584]*pi/180;

 R=6378; %km

 for i=1:length(LAT)-1 

psi(i,1) = atan2( sin (LON(i+1)-LON(i)) * cos (LAT(i+1)) , cos (LAT(i)) *sin (LAT(i+1)) - sin (LAT(i)) * cos (LAT(i+1)) * cos (LON(i+1)-LON(i)) );

a=(sin((LAT(i+1)-LAT(i))/2))^2+cos(LAT(i))*cos(LAT(i+1))*(sin((LON(i+1)-LON(i))/2))^2;

c=2*atan2(sqrt(a),sqrt(1-a)); 

d(i,1)=R*c; 

end

如果在调用
deg2km
时忽略地球半径,您会得到什么答案?如果我运行此代码pos_y=deg2km(p_y);位置x=deg2km(p_x);我得到的结果是:1048.9687公里,它仍然不同于谷歌地图或其他网站。你的参考计算沿着一条直线测量。Matlab和Google沿曲面测量。因为地球是一个球体。像谷歌这样的网站可能解释了两极和赤道的不同半径。那么你有什么建议来匹配这两个结果吗?我不能确定我的代码是否正确。这三个版本都没有错,但每个版本都计算了其他内容。你需要什么?