💡 核心原理:为什么需要“窗”?
想象你要制作一个完美的圆形饼干(理想滤波器),但你的面团是无限大的(无限长的 $h_d[n]$)。
你需要用一个饼干模具(窗函数)把它截断,才能放进烤箱(计算机)里处理。
1. 理想状态 (The Dream)
频域是完美的矩形(墙)。
时域是无限长的 $\text{sinc}$ 函数。
✖
2. 现实手段 (The Window)
我们只能保留一段 N 个点。
相当于乘以一个“窗函数” $w[n]$。
=
3. 最终结果 (The Reality)
时域变有限了。
代价:频域边缘出现了“褶皱”(吉布斯现象),过渡带变宽。
🛠️ 交互实验室:所见即所得
← 调整参数,实时观察频谱变化
时域:$h_{ideal}[n]$ (灰) $\times$ $w[n]$ (绿) = $h[n]$ (蓝)
频域:幅度响应 $20\log|H(e^{j\omega})|$ (dB)
观察重点:
1. 矩形窗的过渡带很窄,但在阻带有很多波纹(衰减差)。
2. 切换到 Blackman窗,主瓣变宽(过渡带变宽),但阻带衰减非常深(波纹消失)。
3. 增加长度 N,过渡带会变陡峭。
🎓 综合例题:传感器噪声滤除
场景: 一个采样率为 $F_s = 2000 \text{ Hz}$ 的系统,需要设计一个低通滤波器滤除 $500 \text{ Hz}$ 以上的高频噪声,要求在 $400 \text{ Hz}$ 处衰减不超过 3dB,在 $600 \text{ Hz}$ 处至少衰减 50 dB。
Fs = 2000 Hz
Fp = 400 Hz
Fs_stop = 600 Hz
As >= 50 dB
Step 1: 归一化频率
$$ \omega_p = 2\pi \frac{400}{2000} = 0.4\pi $$
$$ \omega_s = 2\pi \frac{600}{2000} = 0.6\pi $$
$$ \omega_c = \frac{0.4\pi + 0.6\pi}{2} = 0.5\pi \quad (\text{理想截止频率}) $$
$$ \Delta\omega = \omega_s - \omega_p = 0.2\pi \quad (\text{过渡带宽度}) $$
Step 2: 选择窗函数
需求是阻带衰减 $\ge 50 \text{ dB}$。
查表可知:
- Hanning (-44 dB) 不够
- Hamming (-53 dB) 满足,且过渡带较窄,首选
- Blackman (-74 dB) 满足,但阶数会更高
决定:使用 Hamming 窗。
Step 3: 计算长度 N
Hamming 窗过渡带公式: $\Delta\omega \approx \frac{6.6\pi}{N}$
$$ N \ge \frac{6.6\pi}{0.2\pi} = 33 $$
取奇数 $N = 33$。因此阶数 $M = N-1 = 32$,延迟 $\alpha = 16$。
Step 4: 最终表达式
设计完成!滤波器系数 $h[n]$ (对于 $0 \le n \le 32$) 为:
$$ h[n] = \frac{\sin[0.5\pi (n-16)]}{\pi (n-16)} \cdot \left( 0.54 - 0.46 \cos\left( \frac{2\pi n}{32} \right) \right) $$