用于校正轻微时钟漂移的插值算法

时间:2013-05-18 14:21:00

标签: python scipy numeric numerical-methods

我有一些采样(单变量)数据 - 但是驱动采样过程的时钟是不准确的 - 导致每30个(小于)1个样本的随机滑动。在大约1/30的频率下提供更准确的时钟对于相同数据的可靠采样......允许我建立对时钟漂移的良好估计。

我希望对采样数据进行插值以对此进行校正,以便“适应”高频数据到低频。我需要“实时”完成这项工作 - 只需要几个低频样本的延迟。

我认识到存在各种各样的插值算法 - 在我考虑过的算法中,基于样条的方法对于这些数据看起来最有希望。

我正在使用Python - 并且已经找到了scipy.interpolate包 - 尽管我没有看到任何明显的方法来使用它来“拉伸”n个样本来纠正一个小的计时错误。我忽略了什么吗?

我对指向合适的已发布算法的指针感兴趣,或者 - 理想情况下 - 对实现此类转换的Python库函数感兴趣。 SciPy(或其他任何东西)支持吗?

... UPDATE

我开始意识到,起初看起来似乎是一个微不足道的问题并不像我最初想的那么简单。我不再相信天真地使用样条线就足够了。我也意识到我可以更好地描述我的问题而不参考'时钟漂移'......就像这样:

以两个不同的频率对单个随机变量进行采样 - 一个低和一个高,没有公约数 - 例如5hz和144hz。如果我们假设样本0在两个采样率下都是相同的,则样本1 @ 5hz落在样本28 amd 29之间。我想构建一个新系列 - 比如720hz,它“尽可能平滑地拟合所有已知数据点”。

我曾希望找到一个“开箱即用”的解决方案。

2 个答案:

答案 0 :(得分:1)

在您提出编程问题之前,在我看来,您需要研究一个更基础的科学问题。

在开始挑选特定方程以适应badfastclock到货物时钟之前,您应该研究漂移的性质。让两个时钟运行一段时间,并一起看看他们的点。 badfastclock是不是很糟糕,因为它远离实时线性漂移?如果是这样,一个简单的二次方程应该适合badfastclock到货物时钟,正如二次方程描述物体在重力中的线性加速度一样;也就是说,如果badfastclock与实时线性地加速,你可以确定地将badfastclock转向实时。但是,如果你发现badfastclock很糟糕,因为它是跳跃的,那么平滑的曲线 - 甚至像样条曲线这样的复杂平滑曲线 - 都不合适。在尝试操作之前,您必须先了解数据。

答案 1 :(得分:0)

根据您更新的问题,如果数据随时间平滑,只需将所有样本放在时间轨迹中,然后在稀疏网格上进行插值(时间)。