永发信息网

已知三十个地区的经纬度,用matlab怎么编程求出这三十个地区两两之间的距离,会的帮忙编下程序代码

答案:2  悬赏:80  手机版
解决时间 2021-11-14 22:39
  • 提问者网友:寂寞梧桐
  • 2021-11-14 01:34
已知三十个地区的经纬度,用matlab怎么编程求出这三十个地区两两之间的距离,会的帮忙编下程序代码
最佳答案
  • 五星知识达人网友:等灯
  • 2021-11-14 01:45
直接用MATLAB地图工具箱(Mapping Toolbox)的distance函数就可以了,例如(为方便举例,这里只设置了4个点,30个点同样处理):


已知各点的经纬度(依次为京沪津渝四地)


pts = [ ...


116.46 39.92;


121.48 31.22;


117.20 39.13;


106.54 29.59


形成两两之间对应的矩阵(对称阵,可以只看上三角或下三角)


[LA1,LA2]=meshgrid(pts(:,2));


[LO1,LO2]=meshgrid(pts(:,1));

计算两两之间的距离,单位为公里


R = distance(LA1,LO1,LA2,LO2,almanac('earth','wgs84'));这里地球模型是采用的WGS84
考椭球,也可以改用其它参考椭球,具体可参考almanac函数。


得到的结果为


>> num2str(R,'%10.2f')


ans =


0.00   1066.68    108.36   1460.16


1066.68      0.00    959.95   1445.81


108.36    959.95      0.00   1440.61


1460.16   1445.81   1440.61      0.00

    如下图所示,打开软件后点击File/New/Script后,会出现文件编辑窗口:
    在文件编辑窗口输入代码,如下图所示:
    检查代码,确保没有错误后点击窗口中运行(Run)按钮,运行程序(如下图红色箭头所示按钮):
    查看运行结果,由于利用plot函数绘制曲线,所以运行后出现如下红色箭头所指的二次曲线:
全部回答
  • 1楼网友:夜余生
  • 2021-11-14 02:52

直接用MATLAB地图工具箱(Mapping Toolbox)的distance函数就可以了,例如(为方便举例,这里只设置了4个点,30个点同样处理):

% 已知各点的经纬度(依次为京沪津渝四地)
pts = [ ...
    116.46 39.92;
    121.48 31.22;
    117.20 39.13;
    106.54 29.59
    ];

% 形成两两之间对应的矩阵(对称阵,可以只看上三角或下三角)
[LA1,LA2]=meshgrid(pts(:,2));
[LO1,LO2]=meshgrid(pts(:,1));

% 计算两两之间的距离,单位为公里
R = distance(LA1,LO1,LA2,LO2,almanac('earth','wgs84'));

这里地球模型是采用的WGS84参考椭球,也可以改用其它参考椭球,具体可参考almanac函数。

 

得到的结果为

>> num2str(R,'%10.2f')
ans =
   0.00   1066.68    108.36   1460.16
1066.68      0.00    959.95   1445.81
 108.36    959.95      0.00   1440.61
1460.16   1445.81   1440.61      0.00
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯