窗函数频谱特性对比 返回
信号处理模拟器

窗函数频谱特性对比 — 主瓣宽度与旁瓣抑制

可视化矩形、Hann、Hamming、Blackman 窗的频谱特性。改变窗长、信号频率与频率偏移量,直观理解频谱泄漏抑制与分辨率之间的折中关系。

参数设置
窗长 N
信号频率 f₀
bin
频率偏移 δ
bin
窗类型(0=矩形 1=Hann 2=Hamming 3=Blackman)

δ 是信号相对于整数 bin 的偏移量。δ=0 时无泄漏,δ=0.5 时泄漏与扇贝损失最大。

计算结果
主瓣宽度 (-6 dB)
最大旁瓣抑制
相干增益 CG
峰值幅度误差(δ=0.5 时)
窗函数时域波形与频谱

上:窗函数 w[n](青)/下:|W[k]| 的 dB 谱(红)/黄虚线:信号 bin 位置 f₀+δ

理论与主要公式

窗函数是一种加权序列,用于消除有限长度 DFT 因周期性假设而产生的频谱泄漏。代表性的窗函数定义如下(n = 0, 1, …, N−1):

矩形窗(无窗):

$$w[n] = 1$$

Hann 窗:

$$w[n] = 0.5\left(1 - \cos\frac{2\pi n}{N-1}\right)$$

Hamming 窗:

$$w[n] = 0.54 - 0.46\cos\frac{2\pi n}{N-1}$$

Blackman 窗:

$$w[n] = 0.42 - 0.5\cos\frac{2\pi n}{N-1} + 0.08\cos\frac{4\pi n}{N-1}$$

窗的频谱为 $W[k] = \mathrm{DFT}(w[n])$。主瓣越宽,频率分辨率越差;旁瓣越低,频谱泄漏越小。两者呈直接折中关系。

相干增益 CG(平均幅度增益):

$$\mathrm{CG} = \frac{1}{N}\sum_{n=0}^{N-1} w[n]$$

什么是窗函数频谱特性对比模拟器?

🙋
在信号处理中经常听到"窗函数",为什么必须乘上去?直接做 FFT 不行吗?
🎓
这是个经典陷阱。FFT 假设信号以帧长 N 为周期重复,但真实信号几乎不可能正好对齐,于是帧两端会有突然的不连续。这个不连续把本来该是单根的谱线"漏"到周围许多 bin 里——这就是频谱泄漏。在模拟器里把窗类型设为 0(矩形=无窗)、δ 设为 0.5 试试看:下方的频谱不再是一根尖峰,而是拖着长尾向两侧扩散。
🙋
确实,矩形的旁瓣很乱!切到 1(Hann)后就变成干净的一根了。
🎓
对,窗函数把帧两端平滑地拉到 0,消除不连续。Hann 用余弦曲线在两端正好归零;Hamming 留一点小台阶,把最近旁瓣压到最低;Blackman 用三个余弦项把远端旁瓣彻底压下去。把窗类型滑块从 0 拉到 3,能看到旁瓣电平一级一级下降。
🙋
那是不是 Blackman 最好,永远用它就行?
🎓
这是关键的折中。旁瓣降低必然伴随主瓣变宽。看"主瓣宽度"卡片:矩形是 2 bin,Hann/Hamming 是 4 bin,Blackman 是 6 bin。主瓣越宽,分辨相邻两根频率的能力(频率分辨率)越差。实务中:想区分相邻频率就选靠近矩形的窗;想在强信号旁边找到弱信号就选靠近 Blackman 的窗。
🙋
"峰值幅度误差"卡片是什么意思?显示 δ=0.5 时 -1.42 dB。
🎓
这叫"扇贝损失(scallop loss)"。当信号频率正好落在两个 bin 中间(δ=0.5)时,主瓣峰值偏离 bin 中心,测得的峰值比真实幅度低。Hann 窗最多会低 1.42 dB。在需要精确测幅度的场合(如声级计、振动测量),必须做补偿或改用 FlatTop 窗。把 δ 在 0 和 0.5 之间滑动,看幅度误差卡片的数值变化。

常见问题

Kaiser 窗有一个形状参数 β(或 α),可以在接近矩形(窄主瓣高旁瓣)到超过 Blackman(极低旁瓣)之间连续调节,是"可调节的窗"。FlatTop 窗把主瓣顶部刻意做平,使扇贝损失低于 0.01 dB,是 FFT 分析仪和声级计幅度标定的标准窗,代价是主瓣很宽(约 9 bin)。
δ=0 表示信号频率正好落在 DFT 的 bin 上,没有频谱泄漏也没有扇贝损失(除窗自身的旁瓣外)。δ=0.5 表示信号频率正好在两个相邻 bin 的中间,是泄漏与峰值幅度误差最大的情形。实际信号中 δ 未知,因此"按最坏情形 δ=0.5 选窗"是常用原则。
N=1024 时,DFT 约 100 万次运算,FFT(Cooley-Tukey)约 1 万次,差距约 100 倍。N=1,048,576 时,DFT 需 1 万亿次,FFT 约 2000 万次,差距超 5 万倍。本工具因 N≤1024 规模小、为代码可读性采用 DFT,但实时处理或大规模分析必须用 FFT 库函数(NumPy fft、MATLAB fft、SciPy、FFTW 等)。
可以。在空间方向同样适用:图像处理的二维 FFT(纹理分析、X 射线衍射图样分析)、天线阵的波束形成、雷达脉冲压缩、光学孔径分析等所有涉及有限长傅里叶变换的场合都用加窗。基本概念(主瓣宽度与旁瓣电平的折中)完全一致。

实际应用

声学与振动分析:机械异常诊断和噪声测量需要对旋转机械的振动信号做 FFT 分析以提取频率成分。Hann 和 Hamming 是通用首选,需要幅度精度时选 FlatTop 窗。在实际机器的转速波动测量中,δ 也会波动,因此需要抗泄漏能力强的窗。

通信信号处理:OFDM 调制(Wi-Fi、4G/5G、数字电视)在发射端做加窗以抑制子载波间干扰。升余弦窗(RC)与根升余弦窗(RRC)用于控制信号谱的带外泄漏,减少对相邻信道的干扰。

地震学与地球物理:地震波频谱分析与微震观测把长时间记录切成短帧做 FFT(STFT,短时傅里叶变换)。如果窗的旁瓣淹没了小振幅的后续波,诊断就会出错,因此 Blackman 窗和 Kaiser 窗被广泛采用。

雷达与声呐:脉冲压缩雷达与主动声呐中,距离分辨率(主瓣宽度)与弱目标检测能力(旁瓣电平)之间的折中直接决定性能。为了避免在强目标附近漏掉弱目标,常用 Taylor 窗和 Chebyshev 窗等可指定旁瓣电平的特殊窗。

常见误解与注意事项

最常见的误解是"加窗会改变信号波形,所以不好"。确实加窗修改了时域波形,但这是应对"帧长有限"这一测量制约的最佳办法。不加窗(矩形窗)反而会出现最严重的频谱泄漏。重要的是要认识到:不加窗等价于加矩形窗,"不选择窗函数"这个选项实际上并不存在。

其次,"旁瓣越低的窗越好"是错误的。旁瓣降低意味着主瓣变宽,分辨相邻两个频率成分的能力(频率分辨率)变差。在模拟器中把窗类型从 0 切到 3,观察下方频谱主瓣的宽度与圆润度变化。要根据目的——"分辨率优先"还是"低泄漏优先"——选择合适的窗。

最后,在测幅度时不要忘记相干增益(CG)补偿。Hann 窗会让频谱峰值变成真实信号幅度的一半(CG=0.5)。读取加窗后频谱的幅度时,必须除以所用窗的 CG。如果 δ≠0 还需要补偿扇贝损失(使用 FlatTop 窗可把此误差降到 1% 以下)。一旦用了窗函数,处理的就不是"频谱本身的值",而是"考虑了窗特性的补偿值"。