【问题标题】:how to find distance between consecutive points如何找到连续点之间的距离
【发布时间】:2017-02-02 10:32:56
【问题描述】:

我有一个矩阵

A=[51.7365160000000 10.7978860000000;
   51.7366230000000 10.8319610000000;
   51.7389880000000 10.7849260000000;
   51.7424430000000 10.9195510000000;
   51.7443820000000 10.9157750000000;
   51.7448080000000 10.9160750000000;
   51.7523270000000 10.8756060000000;
   51.7525920000000 10.8758210000000;
   51.7526190000000 10.8738470000000;
   51.7526460000000 10.8763360000000;
   51.7528580000000 10.8477970000000;
   51.7530180000000 10.8776230000000];

A的第一列表示纬度,第二列表示经度,每一行表示不同的点。我想找到连续点之间的距离。我就是这样使用pdist这个函数的

a = pdist(A,'euclidean')';

但它给出了所有点之间的距离,而不仅仅是连续点之间的距离。

你能帮我解决这个问题吗?

谢谢

【问题讨论】:

    标签: matlab distance points


    【解决方案1】:

    正如pdist 的帮助中所指出的,您可以使用squareform 来组织数据。

    b = squareform(a);
    

    相邻点之间的距离就是这个矩阵的下对角线。

    dist = diag(b,1) 
    

    您也可以轻松地手动计算距离

    dist = sqrt(diff(A(:,1)).^2+diff(A(:,2)).^2)
    

    【讨论】:

    • +1:您可以在两列上应用diff,并使用更短的表达式:dist = sqrt(sum(diff(A).^2,2))
    猜你喜欢
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多