FIR 滤波器特性

FIR 为线性相位滤波器,其他滤波器只能接近 FIR 的线性相位特性。但是 FIR 要达到相应的阻带衰减需要较高的阶数,计算量大,延时大。

通带纹波计算

matlab 代码:

1
2
3
4

passband_freq = f(f <= 20000); % 人耳可听范围
ripple_float = 20*log10(max(abs(H_float_pb))) - 20*log10(min(abs(H_float_pb)));

吉布斯现象

FIR 滤波器的阶数越高,过渡带越窄,但通带和阻带的纹波也会增加,这就是吉布斯现象。
尤其是阻带纹波,不同阶数相同频率下其增益会不一致。
例子:

  • 199阶 55khz增益为-102db 239阶相同频率下增益为-97db 增益纹波峰值刚好对应了此频率

实现伪线性相位的常见方法

  1. IIR + All-Pass 相位补偿器
    主滤波器使用高效的 IIR(如 Butterworth)
    后级串联一个 All-Pass 滤波器,用于修复群延迟曲线
    目标是让整体系统在 20 Hz–20 kHz 范围内群延迟近似恒定

2. 对称零点分布的 IIR 设计

  • 通过优化零极点位置,使群延迟曲线在目标频段内尽量平坦
  • 例如使用 Biquad 结构并调整 Q 值和中心频率
  • 可用于 EQ、动态处理器等音频模块

3. 低阶 FIR + 非对称窗函数

  • 使用如 Kaiser、Tukey 等窗函数设计低阶 FIR
  • 虽然不是严格对称,但在目标频段内相位响应近似线性
  • 适合嵌入式系统或 FPGA 中的资源优化设计

4. 最小相位滤波器 + 延迟补偿

  • 使用 minimum-phase 滤波器(群延迟最小)
  • 后级加一个固定延迟块,使整体延迟趋于线性
  • 适合实时处理场景,如语音识别、通信系统