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

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

可视化矩形、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中的漏谱(spectral leakage)而设计的加权函数,在帧两端平滑衰减。代表性的窗函数如下所示(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为周期无限重复,但实际信号往往不是N的整数倍周期,导致帧的两端信号被生硬地截断。这个"不连续"会让频谱从一条线扩散到周围的bin,这就叫"漏谱(spectral leakage)"。试试在模拟器中把窗类型改为0(矩形=无窗),然后把δ改为0.5,你会看到下面的频谱裾部大幅扩展。
🙋
确实,矩形的旁瓣超大!改成1(Hann)后就变成一条线了。
🎓
对,窗函数的作用就是在帧的两端平滑衰减到0,消除不连续性。Hann窗在两端恰好为0的余弦曲线;Hamming窗微微保留一点,用来最小化最近邻旁瓣;Blackman用3条余弦项彻底抑制远旁瓣。把窗类型从0→1→2→3逐步改变,你会看到旁瓣电平一步步下降。
🙋
那Blackman是最好的窗啊?是不是就用Blackman全搞定?
🎓
这就是权衡。抑制旁瓣会让主瓣变宽。看stat-card里的"主瓣宽度"——矩形是2 bin,Hann/Hamming是4 bin,Blackman是6 bin,越来越宽。主瓣宽说明频率分辨率变差,两个接近的频率就分不开了。实践中"要分离接近频率"就选窄主瓣的,"要在强信号旁发现弱信号"就选低旁瓣的,根据需求选择。
🙋
"峰值幅度误差"那张卡显示δ=0.5时−1.42 dB,这是什么意思?
🎓
这叫"幅度扫描损失(scallop loss)"。当信号频率恰好在两个bin的中点(δ=0.5),主瓣顶点偏移,测到的峰值比真实振幅低。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=104.8576万时,DFT约1兆,FFT约2000万,差5万倍以上。本工具中N≤1024较小,为了代码可读性用直接DFT计算;实际应用中都用NumPy的numpy.fft.fft、MATLAB的fft或SciPy的fft函数,当N是2的幂时速度最快。
不是。空间域也完全一样。比如图像处理的2D FFT(纹理分析、X射线衍射图像分析)、天线阵列波束形成、雷达脉冲压缩、光学孔径等,任何涉及有限区间傅里叶变换的场景都需要"窗掩"。基本原理(主瓣vs旁瓣权衡)是通用的。

实际应用

声学与振动分析:机器故障诊断和噪声测量中,振动信号经FFT分析以提取频率成分。广泛采用Hann窗和Hamming窗,精确振幅测量时选FlatTop窗。转速变工况下δ变化,需选用抗漏谱能力强的窗。

通信信号处理:OFDM调制(Wi-Fi、4G/5G、数字电视)中发送端对信号窗处理以抑制带外泄漏,使用Raised Cosine(RC)或Root Raised Cosine(RRC)窗来最小化邻近信道干扰。

地震地球物理:地震波频率解析和微地震监测中,长时间记录分帧进行FFT(STFT)。窗的旁瓣会掩盖弱的后续波,所以倾向于选Blackman或Kaiser窗。

雷达与声纳:脉冲压缩雷达和主动声纳中,距离分辨率(主瓣宽)与弱目标检测能力(旁瓣)直接影响性能。为保持旁瓣一致水平通常采用Taylor或Chebyshev特殊窗。

常见误区和注意事项

最大的误区是认为"使用窗函数会改变信号,有害"。确实窗处理改变了时间波形,但这是对有限帧长这一测量约束的最优处理;不加窗(等同于矩形窗)结果反而更差。重点是认识到"选择不加窗=在用矩形窗",没有"不选窗"这个选项。

其次是盲目追求"更低旁瓣就更好"。低旁瓣必然伴随主瓣变宽,分辨率下降,两个接近的频率就分不开。看看模拟器中窗从0改到3时频谱下段的变化——矩形窗尖锐,Blackman窗又圆又宽。分辨率优先还是低漏谱优先,必须按应用场景来选。

第三是忘记做"相干增益补偿"。Hann窗使频谱峰值变成真实振幅的一半(CG=0.5)。用FFT分析仪读频谱幅度时,一定要用窗的CG来除以得到真值,再加δ≠0的幅度扫描损失补偿(用FlatTop窗可将补偿降到1%以下)。窗函数一用,你处理的就不是"频谱本身",而是"考虑窗特性的补偿值"。

使用指南

  1. 设置采样点数N(256~4096点),确定FFT分析的窗口大小
  2. 指定测试信号频率F0(100~5000 Hz),观察主瓣与旁瓣的分离情况
  3. 调整频谱泄漏系数δ(0~1.0),使F0产生频率偏移,验证频率分辨率的极限
  4. 在矩形、Hann、Hamming、Blackman 4种窗函数间切换,比较主瓣宽度和旁瓣抑制特性的差异
  5. 记录输出的"主瓣宽度(-6 dB)"、"最大旁瓣抑制"、"相干增益",选择最适用途的窗

具体计算示例

设N=1024点、F0=1000 Hz、δ=0.3,比较矩形窗和Blackman窗。矩形窗情况:主瓣宽度3.9频点(约3.8 Hz),频率分辨率优势明显,但最大旁瓣−13 dB,接近频率成分易被掩盖。Blackman窗情况:主瓣宽度11.0频点(约10.7 Hz)扩大,最大旁瓣抑制−58 dB,相干增益0.42,在宽带噪声环境中信号检测精度更高。当δ=0.5时幅度扫描损失:矩形窗约8.3%,Blackman窗约1.2%,谱泄漏影响明显降低。

实际应用注意事项

  1. 音频振动测量噪声电平高时(SN比 <10 dB)选Blackman窗,最大旁瓣抑制−58 dB可抑制背景噪声成分
  2. 机械故障诊断需同时检测多个转速频率时,Hamming窗(旁瓣−43 dB)可确保1.5 Hz以上频率间隔的成分分离
  3. 用窗函数的相干增益(CG值)进行幅度标定补正;矩形窗CG=1.0对比Blackman窗CG=0.42,测量值需乘以2.38
  4. 主要成分为高频噪声时选矩形窗使主瓣宽度最小,优先频率分辨率;但仅在旁瓣−13 dB限制内有效
  5. 频率偏移δ处于0.3~0.7中等偏移范围时,Hann窗旁瓣−32 dB与11.0频点宽度的平衡在工程上最有利