重采样会导致相移吗?

信息处理 重采样 抽取 抗混叠滤波器
2022-01-28 11:30:09

我有一个以 40MHz 采样的信号,我想将其重新采样到 37MHz。信号不是周期性的,我使用 Matalb resample 函数进行了重采样,它不会导致相移(据我所知)。Matlab 应用抗混叠 FIR 滤波器并补偿该过程引入的延迟。

我想在 Python 中做同样的过程。我知道 scipy.signal 中有一个 resample 函数,但文档对我来说并不清楚。重采样功能是否会引入相移?

如果是这样,scipy 中还有一个抽取函数,它应用了类似的 FIR 滤波器。我应该在重采样上使用抽取函数吗?

2个回答

不幸的是,虽然scipy.signal.decimate相移参数为零,但抽取因子只能是整数,因此您将无法从 40KHz 下采样到 37kHz。

scipy.signal.resample,另一方面,可以进行您想要的重采样,但可能(并且很可能会)在您的信号中引入相移。

还有其他选项(例如sklearn.resample),因此也可以查看它们。

先上采样 12,然后再下采样 13,你会非常接近 37Mhz,准确地说是 36.92MHz,应该足够了。

如果您想要精确的 37Mhz,则上采样 37,然后下采样 40,但这是计算密集型且增益不大,因此最好选择第一种策略。对于第一种情况,抗锯齿要求也较少。