当N点DFT中的N增加时会发生什么

信息处理 自由度 零填充
2021-12-26 19:17:16

我对DFT很好奇,我写了一个简单的MATLAB代码来测试当N增加。我拿了一个长方形信号L=15,然后找到 16、32 和 64 个点的 th DFT。我查看了 DFT 的图,但是我不明白为什么它们之间存在差异以及零填充如何影响 DFT。有人可以解释一下吗?

1个回答

DFT 的长度 N 是将导致 DFT 输出的频点数。零填充将导致更多的频率样本,但这不会增加频率分辨率,它只是在 DTFT 中插入样本。频率分辨率由下式给出1/T其中 T 是数据的时间长度(与采样率无关)。因此,如果您想提高实际频率分辨率,则需要在给定的采样率下增加样本数,或者降低采样率,这会增加您拥有的样本数的时间长度。

有关 DTFT 和 DFT 之间区别的进一步说明,请参阅我的帖子回复:

对于二维信号,可以说频率响应与傅里叶变换相同吗?

这是显示频率分辨率和零填充的演示。图片顶部频率轴上的两个红色方块表示两个测试音的“真实”频率位置,即 f1 = 0.26 和 f2 = 0.28。鉴于归一化频率(周期/样本)的分离为 0.02,我们需要大于 1/0.02 = 50 个样本来解析这两个频率。上图显示了只有 10 个数据样本并且对 10(无填充)、20、50 和 100 的最终数据集的时域数据进行零填充的结果。我们在该图中清楚地看到,随着我们添加更多样本,我们插入了更多的频率点,但它没有提供有关我们两个音调的各个频率内容的任何进一步信息。

下面是另一个图,我们不只是添加零,而是增加数据集中存在相同两个频率音调的样本数量,并再次采用 10、20、50 和 100 个样本进行 DFT。在 50 个样本时,我们有足够的频率分辨率来进行频率分离(但在图上仍然很难看到),而在 100 个样本时,分离清晰可见。

在此处输入图像描述

在此处输入图像描述

为什么是这样?用零填充与将较长的序列与矩形窗口相乘相同。将时域序列相乘与频域中的卷积(DFT 的循环卷积)相同。我们在上面的示例中有效使用的时域矩形窗口,以及窗口本身的结果 DFT 如下图所示。窗口的 DFT 将与我们的原始频率进行卷积。随着窗口时间长度的增加,其频率变换的主瓣宽度变得更窄(零点位于 1/T),因此频率分辨率增加。

在此处输入图像描述