matlab 为距离最短的给定点寻找与纬度和经度向量对应的唯一最近点

xxb16uws  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(166)

我有两个纬度和经度对的大矢量(Lat,Lon)。我想找到与距离最短的点([lat_deg,lon_deg])对应的唯一的一对纬度和经度。
我正在使用这个:

P = ([lat_deg, lon_deg]);
PQ = [Lat, Lon];
[k,dist] = dsearchn(P,PQ);

最后,我得到了所有点的距离,向量k包含所有的1。如果这是正确的功能,请指导我,如果是,我如何改正它?如果不是,什么是正确的功能。
样例向量为:

Lat                      Lon
39.2591200000000    -85.9394200000000
39.2591300000000    -85.9392000000000
39.2590800000000    -85.9406300000000
39.2593500000000    -85.9406200000000
39.1949800000000    -85.9633400000000
39.1954200000000    -85.9633500000000
39.1954200000000    -85.9633500000000
39.1963300000000    -85.9633600000000
39.1957400000000    -85.9678800000000
39.1959300000000    -85.9682400000000

P=39.2005981000000  -85.9045842000000
ma8fv8wu

ma8fv8wu1#

您只需颠倒参数顺序即可。因此,使用您的原始变量名(这是问题首次出现的地方):

[k,dist] = dsearchn(PQ,P)

k =

     8

dist =

    0.0589

K=dearch n(P,PQ)返回P中距离PQ中查询点最近的点的索引,以欧几里德距离测量。
点查询是点PQ(在您的情况下是单个点,但可以是点列表)(并且您定义为P,但应该是PQ),并且要计算的点列表是P(您定义为PQ)。
为了完整性,这是原始代码使用原始变量名再次生成的结果(也可以方便地给出从查询点到点列表的距离):

>> [k,dist] = dsearchn(P,PQ)

k =

     1
     1
     1
     1
     1
     1
     1
     1
     1
     1

dist =

    0.0681
    0.0680
    0.0687
    0.0689
    0.0590
    0.0590
    0.0590
    0.0589
    0.0635
    0.0638

为了进一步解释您是如何获得所做的工作的-查询点被定义为一个点的列表,而要计算的点是一个大小为1的列表。因此,1个点的列表是到每个查询点的最短距离,因此每个查询点的索引是1。
我假设您知道如何解释dist值。

相关问题