计算两个二维数据序列之间的“距离”

时间:2014-02-11 10:18:06

标签: matlab

我有两个数据集(轨迹),其中x / y点代表GPS位置。我想分析两个轨道之间的距离。这些点不是必须同步的,而是具有相同的频率,如此小摘录中所示(每个轨道由1000+点组成): Example Picture

由于不同步,我不能只比较彼此最接近的两个点。由于路径不完全相同,我无法同步轨道。它可能是为每个数据集插入曲线然后计算其间的积分的解决方案。由于轨道比示例中显示的长得多,因此我不能仅使用像polyfit这样的回归函数。

如何做到这一点,还是有其他/更好的策略来分析(平均值/均方...)距离?

2 个答案:

答案 0 :(得分:1)

x / y数据是否记录为时间的函数?如果是这样,您可以使用timeseries timeseries函数重新取样一个或两个数据集,使其具有相同的采样时间向量。您必须先将数据转换为{{1}}对象,但这是值得的。将两个数据集重新采样到同一时间向量后,只需从另一个中减去一个。

答案 1 :(得分:1)

到目前为止,到目前为止,答案是最简单的,也许还有可行的方法。

但是,我想添加一些其他方法来执行此操作,这些方法要复杂得多,但可以根据您的使用情况大大提高准确性。

如果它不适合你,那么它可能对其他任何人都有用。

方法1

优点:快速,轻松

缺点:方法对曲目的平滑性过于乐观

  1. 确定两个曲目的B-spline representation。然后,您将获得两个轨道的参数关系:

    enter image description here

  2. 两条曲目之间的距离为average of the function

    enter image description here

    表示所有适用的t,它通过以下积分计算:

    enter image description here

  3. 方法2

    优点:最接近"物理"情况

    缺点:很难做到正确,特定于情况因此不可重复使用

    1. 使用该轨道后面的任何运动方程来推导任意时间步长t的转换矩阵。如果可能,还要提出适当的噪音模型。

    2. 使用Kalman filter将两个轨道重新采样到一些等距时间向量,该向量最好不同于轨道1和轨道2的时间向量。

    3. 计算这样计算的x,y对之间的距离,取平均值。

    4. 方法3

      优点:快速,轻松

      缺点:方法对曲目的平滑性过于乐观。这两种情况都有偏见。

      1. 通过曲目1

      2. 调整空间曲线 轨道2中所有点到此空间曲线的
      3. Compute the distances

      4. 重复1和2,反之亦然。

      5. 取所有这些距离的平均值。

      6. 方法4

        优点:快速,轻松

        缺点:方法对曲目的平滑性过于乐观。由于固有的较大噪音条件,飞度将会降低质量。

        1. 将空间曲线拟合到两个轨道的 union 。也就是说,将来自轨道1和轨道2的点作为单个数据集处理,通过该数据集拟合空间曲线。

        2. 计算两个轨迹相对于此空间曲线的垂直残差。

        3. 计算所有这些距离的平均值。

        4. 说明

          • 请注意,此处的所有方法都使用平地假设。如果轨道真的很长并覆盖了地球表面不可忽略的部分,那么你必须通过Haversine formula计算距离而不仅仅是毕达哥拉斯根。卡尔曼滤波器对此不太敏感,只要你的运动方程能够处理球形地球。

          • 如果您有感兴趣区域的高程模型,请使用它。当然,根据地区的不同,你会感到惊讶的是,与光滑的地球相比有多大差异。