以略微不同的采样频率同步 2 个时间序列信号

信息处理 时间序列 同步 上采样
2022-01-29 01:10:09

我正在使用具有两个采集通道的嵌入式系统,不幸的是,它们的时钟晶体稍微不同步。尽管两个板都由软件配置为以 1kHz 采样,但实际上,其中一个以 996 Hz 采样,另一个以 1008 Hz 采样。示波器也证实了这一点。

我想同步这两个信号,以便提取它们之间的相位滞后。(两个通道都在感测/采样相同的周期信号,两者之间具有恒定的相位差)。

现在,我只是使用内置的 Python scipy 函数将两个信号上采样到 2kHz,然后将它们放在一起。它似乎有效,但考虑到原始信号和上采样信号之间的比率不是整数(分别为 2000/996 和 2000/1008),我不确定这样的上采样是否有效。

有一个更好的方法吗?

1个回答

如果您确信这种关系是整数的比率,那么重新采样将是一种很好的方法。一个将通过上采样 1008 然后下采样 996 与另一个匹配,当减去它们的最大公约数时,上采样 84 和下采样 83。

要在 scipy 中执行此操作,请使用 resample 插值到长 84 倍的长度,然后只需从该结果中选择每 83 个样本:

x_new = sig.resample(x, len(x)*84)[::83]

如果您担心残余频率偏移并希望对其进行校正,可以通过使用两个信号来测量频率误差,然后应用成熟的数字重采样技术来完成。这方面的进一步细节取决于信号中的某些特性,如果上述重采样方法足以获得所需的延迟估计,则不需要。

如果最终目标是测量具有不同采样率的同一信号的两个副本之间的延迟,这可以更直接地完成,正如我在这篇文章中详述的那样。