第 4 章 FIR 滤波器 / FIR Filters
4.1 FIR 滤波器的定义
FIR(Finite Impulse Response,有限冲激响应)滤波器的冲激响应 $h[n]$ 只有有限个非零值。
差分方程
$$y[n] = \sum_{k=0}^{M} b_k , x[n-k]$$
系统函数:$H(z) = \sum_{k=0}^{M} h[k] , z^{-k}$,无反馈(分母为 1),本质稳定。
FIR vs IIR
| 特性 | FIR | IIR |
|---|---|---|
| 稳定性 | 总是稳定 | 需要设计保证 |
| 相位特性 | 可实现严格线性相位 | 一般非线性 |
| 阶数 | 通常较高 | 较低 |
| 计算量 | 较大 | 较小 |
4.2 线性相位 / Linear Phase
线性相位保证所有频率分量延迟相同,信号波形不失真:
$$\angle H(e^{j\omega}) = -\alpha\omega + \beta \implies \tau_g = \alpha = \text{const}$$
对称条件
| 类型 | 对称性 | 长度 | 适用 |
|---|---|---|---|
| I 型 | 偶对称,偶阶 | $M$ 偶 | 所有类型 |
| II 型 | 偶对称,奇阶 | $M$ 奇 | 不能高通 |
| III 型 | 奇对称,偶阶 | $M$ 偶 | 微分器/希尔伯特 |
| IV 型 | 奇对称,奇阶 | $M$ 奇 | 同 III 型 |
4.3 窗函数设计法
核心思想:构造理想冲激响应 → 窗函数截断 → 移位因果化。
$$h[n] = h_d\left[n - \frac{N-1}{2}\right] \cdot w[n], \quad n = 0, 1, \ldots, N-1$$
flowchart TD
A["确定指标
ωc、过渡带宽、阻带衰减"] --> B["计算理想冲激响应 hd[n]"]
B --> C["选择窗函数类型"]
C --> D["确定窗长度 N"]
D --> E["h[n] = hd[n-α]·w[n]"]
E --> F["验证频率响应"]
F --> G{"满足指标?"}
G -- 是 --> H["设计完成"]
G -- 否 --> D
style A fill:#1565C0,color:#fff
style E fill:#E65100,color:#fff
style H fill:#228B22,color:#fff
4.4 常见窗函数对比
| 窗函数 | 主瓣宽度 | 最大旁瓣 | 最小阻带衰减 |
|---|---|---|---|
| 矩形窗 | $4\pi/N$ | -13 dB | 21 dB |
| Hanning | $8\pi/N$ | -31 dB | 44 dB |
| Hamming | $8\pi/N$ | -41 dB | 53 dB |
| Blackman | $12\pi/N$ | -57 dB | 74 dB |
| Kaiser ($\beta$可调) | 可变 | 可变 | 可调 |
Kaiser 窗:$w[n] = I_0(\beta\sqrt{1-(\frac{2n}{N-1}-1)^2}) / I_0(\beta)$,唯一可连续调节的窗。
4.5 频率响应分析
$$H(e^{j\omega}) = \sum_{n=0}^{M} h[n] , e^{-j\omega n}$$
FIR 极点全在 $z=0$(总稳定),零点最多 $M$ 个。线性相位 FIR 零点具有共轭+镜像双重对称。
4.6 等波纹设计 / Equiripple Design
Parks-McClellan 算法基于切比雪夫最佳一致逼近,使通带和阻带误差等波纹分布,给定阶数下性能最优。
| |
4.7 工程应用
四种基本滤波器
| 类型 | firwin 用法 |
|---|---|
| 低通 | firwin(N, fc) |
| 高通 | firwin(N, fc, pass_zero=False) |
| 带通 | firwin(N, [f1, f2]) |
| 带阻 | firwin(N, [f1, f2], pass_zero=False) |
阶数估算(Kaiser)
$$N \approx \frac{A_s - 8}{2.285 \cdot \Delta\omega}$$
完整验证示例
| |
小结
- FIR 始终稳定,可实现严格线性相位
- 窗函数法:简单直观,选窗控制衰减,选长控制过渡带
- 等波纹法:给定阶数下最优
- 工程工具:
scipy.signal.firwin()和remez() - 部署需考虑对称性优化、定点量化、多相分解