参数设置
重置
δ 是信号相对于整数 bin 的偏移量。δ=0 时无泄漏,δ=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 窗和 FlatTop 窗有什么不同?
Kaiser 窗有一个形状参数 β(或 α),可以在接近矩形(窄主瓣高旁瓣)到超过 Blackman(极低旁瓣)之间连续调节,是"可调节的窗"。FlatTop 窗把主瓣顶部刻意做平,使扇贝损失低于 0.01 dB,是 FFT 分析仪和声级计幅度标定的标准窗,代价是主瓣很宽(约 9 bin)。
δ=0 与 δ=0.5 有什么区别?
δ=0 表示信号频率正好落在 DFT 的 bin 上,没有频谱泄漏也没有扇贝损失(除窗自身的旁瓣外)。δ=0.5 表示信号频率正好在两个相邻 bin 的中间,是泄漏与峰值幅度误差最大的情形。实际信号中 δ 未知,因此"按最坏情形 δ=0.5 选窗"是常用原则。
FFT 与 DFT 在实际中的速度差距多大?
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% 以下)。一旦用了窗函数,处理的就不是"频谱本身的值",而是"考虑了窗特性的补偿值"。