使用傅立叶方法进行下采样的正确方法是什么?

信息处理 傅里叶变换 奈奎斯特 下采样 混叠 抽取
2022-02-10 08:58:31

我想知道什么是使用傅里叶变换对采样信号进行下采样的正确方法,因为它的实现scipy.signal.resample让我感到困惑。

通读代码,它首先将信号转换为频域,然后丢弃中间一半的频率(即第二和第三季度),然后逆变换回时域。因此,它试图保持信号的最低和最高频率。

由于 Nyquist-Shannon,我们知道如果没有至少的频率。那么在下采样时,我们不应该丢弃后半部分频率吗?f2f+1

我已经阅读了一些相关的答案,但似乎没有人解决这个具体问题:

Scipy resample,“傅立叶法”解释

Python 的 vs vsresampleresample_polydecimate

2个回答

请注意,DFT 的结果本质上是周期性的,因此结果输出向量的后半部分不对应于最高频率,而是对应于负频率。最高频率(奈奎斯特)在向量的中间,之后你得到最大的负频率,最后一个元素是刚好低于 DC 的最小负频率。这就是为什么当取出向量的中间部分时,实际上会移除最高频率。

给定严格的真实数据作为输入,FFT 的“上半部分”只是下半部分的冗余镜像复共轭。

为了让 IFFT 产生严格真实的结果,您必须保持这种对称性,否则您可能会在下采样结果中得到很多复数,这可能不是您想要的。所以下采样时不能丢弃整个上半部分,否则最终会得到复杂的垃圾。

最高的非镜像频率显示在 FFT 结果的中间。由于需要丢弃该光谱以在抽取之前将光谱带宽限制在 Fs/4 以下,因此您将 FFT 箱从 Fs/4 剪切到 Fs/4,在“上半部分”中剪切它们的镜像复共轭以保持严格的镜像对称,因为您希望在 IFFT 之后得到严格的真实结果。