Answers:
零填充允许人们使用更长的FFT,这将产生更长的FFT结果向量。
较长的FFT结果具有更多的频率点,这些频率点的频率间隔更近。但是,它们本质上将提供与原始数据较短的非零填充FFT的高质量Sinc插值相同的结果。
在不进行进一步插值的情况下进行绘制时,这可能会导致频谱看起来更平滑。
尽管此插值方法无法解决相邻或附近频率的分辨率或分辨率,但它可能使视觉上更容易分辨单个孤立频率的峰值,该频谱在频谱中没有任何明显的相邻信号或噪声。从统计上讲,较高的FFT结果档密度可能会使峰值幅值档更可能接近随机隔离的输入频率正弦曲线的频率,而无需进一步内插(抛物线等)。
但是,实质上,DFT / FFT之前的零填充是对大量点进行插值的计算有效方法。
互相关,自相关或卷积滤波的零填充用于不混合卷积结果(由于循环卷积)。线性卷积的完整结果比两个输入向量中的任何一个都长。如果您没有提供放置此较长卷积结果的位置,则FFT快速卷积将与之混合并压缩您想要的结果。零填充可提供一堆零,以便将更长的结果混合到其中。而且,将仅与零向量混合/求和的东西解混合起来要容易得多。
在决定对时域信号进行零填充之前,需要考虑一些事项。您可能根本不需要将信号填充为零!
1)延长时域数据(不是零填充)以在频域中获得更好的分辨率。
2)如果您希望获得更好的FFT箱定义,则可以增加FFT点的数量,使其超出时域信号长度(零填充),尽管这并不能给您带来更多的真实分辨率。您也可以填充以获得2个FFT点的幂。
在http://www.bitweenie.com/listings/fft-zero-padding/上有一些很好的数字说明了这些观点。
最后要提到的一件事:如果在时域中将信号归零,并且要使用加窗功能,请确保在对零进行归零之前先对信号加窗。如果在零填充后应用窗口功能,则将无法完成窗口应完成的工作。更具体地说,从信号到零的过渡仍将是尖锐的,而不是从零开始的平滑过渡。
通常,DFT之前的零填充等效于在转换后的域中进行插值或更频繁地采样。
这是相反原理的快速可视化。如果以较高的速率及时采样带宽受限的信号,则会得到更“压缩”的频谱,即两端的零均较多的频谱。换句话说,通过在DFT'ing之后简单地对频率进行零填充,然后对零填充的结果进行IDFT',可以及时获取更多样本。
当零填充及时发生时,相同的效果相反。这是因为只要对信号进行带宽限制并至少以奈奎斯特速率采样,就可以实现完美的信号重建。
术语“分辨率”取决于您如何定义它。对我来说,这意味着可以可靠地(统计地)区分时间或频率上两个相邻观察点。在这种情况下,由于频谱泄漏,分辨率实际上取决于DFT大小。也就是说,窗口尺寸较小,转换后的信号更加模糊或模糊,反之亦然。它不同于您采样的频率或我所说的“定义”。例如,您可能以高速率(高清晰度)采样了非常模糊的图像,但是与以较低速率采样相比,您仍然无法获得更多信息。因此,总而言之,零填充根本不会提高分辨率,因为您不会获得比以前更多的信息。
可能有不同的原因,这取决于傅立叶变换之前和之后执行的任何过程。最常见的原因是在任何结果转换中都实现了更高的频率分辨率。也就是说,在变换中使用的样本数量越大,所得功率谱中的二进制宽度越窄。请记住:binwidth = sample_frequency / transform_size(通常称为窗口大小)。由此可以想象,随着变换大小的增加,二进制宽度也会减少(=更好的频率分辨率)。零填充是一种在不将新信息引入信号的情况下增加变换大小的方法。
那么,为什么不进行更大的变换而没有零填充呢?那会不会达到同样的效果?好问题。在许多情况下,您可能希望分析时域数据流,为此您可能正在使用短时傅立叶变换(stft)。这涉及根据您需要的时间分辨率对每N个样本进行一次转换,以表征频谱的变化。问题就在这里。窗口太大,您将失去时间分辨率;窗口太小,您将失去频率分辨率。然后,解决方案是采用较小的时域窗口,以提供良好的时间分辨率,然后将它们零填充以提供良好的频率分辨率。希望这对您有用
更新
我没有很好地解释这一点。我应该更好地澄清它。提到窗口化变换,实际上您没有获得“实际的”更大的频率分辨率,但出于可视化目的(用眼睛读取功率谱),它可以提供更清晰的结果。使用临界采样率,每个旁瓣都占据一个单元,这取决于制图技术可能会产生误导。零填充可提供内插频谱,这可能会更清楚。此外,如果您使用简单的峰采集方法进行频率估计,则零填充的频谱插值效果将使您的频谱样本更接近主瓣的真实峰值。该链接提供了一些有用的图表:http : //www.dsprelated.com/dspbooks/sasp/Practical_Zero_Padding.html