为什么我应该在进行傅里叶变换之前对信号进行零填充?
零填充允许使用更长的 FFT,这将产生更长的 FFT 结果向量。
较长的 FFT 结果具有更多频率间隔更紧密的频率仓。但它们本质上将提供与原始数据的较短非零填充 FFT 的高质量 Sinc 插值相同的结果。
在没有进一步插值的情况下绘制时,这可能会导致看起来更平滑的频谱。
尽管这种插值不会帮助解决相邻或附近频率的分辨率或分辨率,但它可能更容易在视觉上解决单个隔离频率的峰值,该频率在频谱中没有任何重要的相邻信号或噪声. 从统计上看,更高密度的 FFT 结果 bin 可能会使峰值幅度 bin 更接近随机隔离输入频率正弦曲线的频率,并且无需进一步插值(抛物线等)。
但是,本质上,DFT/FFT 之前的零填充是一种插入大量点的高效计算方法。
互相关、自相关或卷积滤波的零填充用于不混合卷积结果(由于循环卷积)。线性卷积的完整结果比两个输入向量中的任何一个都长。如果你不提供一个地方来结束这个更长的卷积结果,FFT 快速卷积只会将它与你想要的结果混合在一起并破坏你想要的结果。零填充提供了一堆零来混合较长的结果。而且,将仅与零向量混合/相加的东西取消混合要容易得多。
在您决定对时域信号进行零填充之前,需要考虑一些事项。您可能根本不需要对信号进行零填充!
1)延长时域数据(不是零填充)以获得更好的频域分辨率。
2)如果您希望看到 FFT 箱的更好定义,请增加超出您的时域信号长度(零填充)的 FFT 点数,尽管它不会为您购买更多真正的分辨率。您还可以填充以达到 2 个 FFT 点的幂。
3)在摆弄 FFT 点时(在前一点中),请确保您的频率点最终位于您想要的位置。点的间距为,其中是采样频率,是 FFT 点的数量。
在http://www.bitweenie.com/listings/fft-zero-padding/上有一些很好的数字说明了这些要点
最后要提到的一件事:如果您在时域中对信号进行零填充并且您想使用窗口功能,请确保在您零填充之前对信号进行窗口化。如果您在零填充后应用窗口函数,您将无法完成窗口应该完成的任务。更具体地说,您仍然会从信号急剧过渡到零,而不是平滑过渡到零。
通常,DFT 之前的零填充等效于在变换域中进行插值或更频繁地采样。
这是对相反工作原理的快速可视化。如果您以更高的速率及时采样一个带限信号,您将获得一个更“压缩”的频谱,即两端具有更多零的频谱。换句话说,您可以通过在 DFT'ing 后简单地在频率上补零,然后对补零结果进行 IDFT'ing 来及时获得更多样本。
当零填充及时发生时,同样的效果相反。这都是因为只要信号是带限的并且至少以奈奎斯特速率采样,就可以实现完美的信号重建。
术语“分辨率”取决于您如何定义它。对我来说,这意味着两个相邻的观察点在时间或频率上能够可靠(统计地)区分的程度。在这种情况下,由于频谱泄漏,分辨率实际上取决于 DFT 大小。也就是说,窗口尺寸越小,变换后的信号就越模糊或模糊,反之亦然。它与您采样的频率或我所说的“定义”不同。例如,您可以以高速率(高清晰度)对非常模糊的图像进行采样,但您仍然无法获得比以较低速率采样更多的信息。因此,总而言之,零填充根本不会提高分辨率,因为您不会获得比以前更多的信息。
如果有人对用于隔离时域样本的窗口函数的频谱感兴趣,那么零填充将增加窗口函数的频率分辨率。
如果时间信号是,其中是窗口函数,那么整个频谱是,其中表示卷积。
中提取一些值。那么是同步函数。例如,如果Nfft与矩形的宽度相同,并且您恰好在一个 bin 频率处有一个正弦曲线,然后出现在该 bin 中心的同步函数的样本恰好落在非峰值过零处,并且您看不到同步的形状频谱。如果你现在零填充你的数据进入FFT,您会在峰值和零交叉点以外的位置看到一些样本,从而揭示结果频谱中同步函数的形状。那么零填充有什么用呢?它在揭示窗口信号离散变换的性质方面当然具有教育用途,这是通常的情况。在实际意义上,如果您对载波上的孤立包络的光谱形状感兴趣,它可能会很有用。