【问题标题】:Calculating the "distance" between two two-dimensional data series计算两个二维数据系列之间的“距离”
【发布时间】:2014-02-14 19:30:25
【问题描述】:

我有两个数据集(轨迹),x/y 中的点代表 GPS 位置。我想分析两条轨道之间的距离。这些点不需要同步,但具有相同的频率,如这段小摘录所示(每首曲目由 1000 多个点组成): Example Picture

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:

    am304 的答案是迄今为止最简单的,也可能是要走的路。

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

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

    方法一

    优点:快速、简单

    缺点:方法对轨道的平滑度过于乐观

    1. 确定两个轨道的B-spline representation。然后你就有了两个轨道的参数关系:

    2. 那么两个轨道之间的距离就是average of the function

      对于所有适用的t,通过以下积分计算:

    方法二

    优点:最接近情况的“物理”

    缺点:很难做到正确,针对具体情况,因此不可重复使用

    1. 使用跟踪该轨迹的任何物体的运动方程来推导任意时间步长t 的转换矩阵。如果可能的话,还要提出一个合适的噪声模型。

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

    3. 计算由此计算出的x,y 对之间的距离,并取平均值。

    方法3

    优点:快速、简单

    缺点:方法对轨道的平滑度过于乐观。两种拟合都有偏差。

    1. 通过轨道 1 拟合空间曲线

    2. Compute the distances 轨道 2 中所有点到此空间曲线。

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

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

    方法四

    优点:快速、简单

    缺点:方法对轨道的平滑度过于乐观。由于固有较大的噪声项,拟合的质量较差。

    1. 将空间曲线拟合到两个轨道的联合。也就是说,将轨道 1 和轨道 2 中的点视为单个数据集,通过该数据集拟合空间曲线。

    2. 计算两条轨道相对于该空间曲线的垂直残差。

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

    备注

    • 请注意,这里的所有方法都使用平地假设。如果轨道真的很长并且覆盖了地球表面不可忽略的部分,那么您将不得不通过Haversine formula 而不仅仅是毕达哥拉斯根来计算距离。卡尔曼滤波器对此不太敏感,前提是您的运动方程考虑了球形地球。

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

    【讨论】:

    • 谢谢。我尝试按照方法1进行操作,但不知何故失败了。您链接到的 cscvn 函数似乎只能绘制内容,但不能保存参数化轨迹以供进一步处理。所以我下载了一个 B 样条工具箱,它应该能够做到这一点link。我使用 Bspline 创建了数据集的样条曲线,并使用 "sqrt(((ux(1:2769)-rx(1:2769))).^2 + ((uy(1:2769)-ry(1: 2769))).^2)" 给出与没有 Bspline 相同的结果...
    • @user3296542: "没有 Bspline";您的意思是使用简单的重采样,如 am304 的回答?
    • 是的,完全正确。但我现在体验到,我的大部分问题都是由于我现在没有考虑到的另一个错误源:其中一个数据集没有均匀采样,即使它应该是。不仅是噪音,还有很少的疯狂跳跃(100 倍)——也许还有一些未被检测到的抖动,这些抖动不包含在时间信号中。我会先解决这个问题,然后再回到距离问题。
    • @user3296542:resample 的工作方式很可能完全相同;通过拟合 B 样条,然后根据该曲线重新采样。连续积分和离散积分之间不会有显着差异(=重采样点之间的距离之和)。出于好奇,这些轨道代表什么?
    • 这就是为什么两个 B 样条之间的连续积分应该比离散比较提供更好的结果。我现在用 interp1 重新采样,它统一重新排列样本。这消除了大多数问题。这些轨迹代表了两条大致相同轨迹的 GPS 记录,一条带有非常准确的接收器,另一条带有我过滤的糟糕的一条。我想测试后一个可以将另一个作为绝对准确参考的准确度(当然这只是一个非常粗略的近似值)。
    【解决方案2】:

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

    【讨论】:

    • 谢谢。两者都记录为时间的函数。一个具有绝对和准确 (GPS) 时间,另一个只有自该记录开始以来的相对时间。两个数据集都已经过重新采样(一个被下采样以匹配另一个频率),通过互相关大致同步并截断到彼此的开始/结束。简单地从彼此中减去这些点就会给我留下一张这样的照片:link。最大值大致合适,但大多数时候误差应低于 1。时间序列如何改善这一点?
    • 图表中显示的错误可能不仅仅是由于此错误。我现在体验到,我的大部分问题都是由于我现在没有考虑到的另一个错误源:其中一个数据集没有完全均匀地采样,即使它应该是。不仅是噪音,还有很少的疯狂跳跃(100 倍)——也许还有一些未被检测到的抖动,这些抖动不包含在时间信号中。我会先解决这个问题,然后再回到距离问题。
    猜你喜欢
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-10-30
    • 2021-01-19
    • 2021-05-15
    • 1970-01-01
    • 2020-12-18
    相关资源
    最近更新 更多