参数设置
δ 是信号频率的 bin 偏移。δ=0 时无漏谱,δ=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%以下)。窗函数一用,你处理的就不是"频谱本身",而是"考虑窗特性的补偿值"。