rect 函数的 FFT 中不可见旁瓣

信息处理 傅里叶变换 频谱
2022-02-06 13:45:55

我正在绘制一个图来显示不同光谱窗口的旁瓣,我注意到如果我采用矩形窗口的简单 fft,我看不到任何旁瓣。我想我只是犯了一个简单的错误。

这是我运行的 Python 代码:

from matplotlib import pyplot as plt
import numpy as np
fAxis = np.linspace(-1/2,1/2,100)
rect = np.ones( 100 )
specWindow = abs(np.fft.fftshift(np.fft.fft(rect)))
plt.plot(specWindow)
plt.show()

在此处输入图像描述

谁能解释如何稍微更改我的代码以查看我期望的旁瓣。我期望一个矩形函数的离散 FT 给我 Dirichlet 核。

3个回答

你必须想象你的信号在两个方向上被周期性地永远扩展。由于您的方形窗口在周期性扩展时在整个间隔内都是恒定的,因此它在任何地方都变得平坦。换句话说,您没有方形窗口。你只有一条平线。这就是为什么只有 fft 上的零频带有任何幅度。尝试在方形窗口的两侧使用一些零再次执行此操作。

零填充您的输入并使用更大的 FFT。这具有对频域点进行插值的效果。然后使用 10*log10(magnitude_squared_of_fft_outputs)。这种方法对我来说很好地复制了哈里斯在 1978 年的经典 windows 论文 [ http://web.mit.edu/xiphmont/Public/windows.pdf ] 中显示的结果。

对矩形进行零填充(保持矩形长度相同)并使用更长的(比如 10X 或 16X 长)FFT 来增加 FFT 频率箱分辨率,使其足以看到 Sinc 函数的旁瓣。确保绘制复杂的组件,而不仅仅是幅度。

进一步增加零填充以获得更高的窗口变换分辨率。