已知三十个地区的经纬度,用matlab怎么编程求出这三十个地区两两之间的...

发布网友 发布时间:2022-04-23 02:18

我来回答

2个回答

热心网友 时间:2022-04-18 18:17

直接用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

热心网友 时间:2022-04-18 19:35

直接用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

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com