二阶 IIR(biquad)滤波器
二阶 IIR(biquad)滤波器的传递函数通常表示为:
H(z)=b0+b1z−1+b2z−21+a1z−1+a2z−2H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}}H(z)=1+a1z−1+a2z−2b0+b1z−1+b2z−2
其中:
- 分子系数:b0,b1,b2b_0, b_1, b_2b0,b1,b2(前馈系数)
- 分母系数:1,a1,a21, a_1, a_21,a1,a2(反馈系数,注意 a0a_0a0 固定为 1)
常见滤波器类型的系数公式
以下是几种典型二阶滤波器的系数计算方法(基于双线性变换法):
1. 低通滤波器(Low-pass)
- 截止频率:fcf_cfc
- 采样频率:fsf_sfs
- 计算公式:
ω0=2πfcfs,α=sin(ω0)2Q,Q\omega_0 = 2\pi \frac{f_c}{f_s}, \quad \alpha = \frac{\sin(\omega_0)}{2Q}, \quad Qω0=2πfsfc,α=2Qsin(ω0),Q 为品质因数\text{为品质因数}为品质因数
b0=1−cos(ω0)2,b1=1−cos(ω0),b2=1−cos(ω0)2,a0=1+α,a1=−2cos(ω0),a2=1−α.\begin{aligned} b_0 &= \frac{1 - \cos(\omega_0)}{2}, \\ b_1 &= 1 - \cos(\omega_0), \\ b_2 &= \frac{1 - \cos(\omega_0)}{2}, \\ a_0 &= 1 + \alpha, \\ a_1 &= -2\cos(\omega_0), \\ a_2 &= 1 - \alpha. \end{aligned}b0b1b2a0a1a2=21−cos(ω0),=1−cos(ω0),=21−cos(ω0),=1+α,=−2cos(ω0),=1−α.
归一化后(除以a0a_0a0):
b0′=b0a0,b1′=b1a0,b2′=b2a0,a1′=a1a0,a2′=a2a0.b_0' = \frac{b_0}{a_0}, \quad b_1' = \frac{b_1}{a_0}, \quad b_2' = \frac{b_2}{a_0}, \quad a_1' = \frac{a_1}{a_0}, \quad a_2' = \frac{a_2}{a_0}.b0′=a0b0,b1′=a0b1,b2′=a0b2,a1′=a0a1,a2′=a0a2.
2. 高通滤波器(High-pass)
- 系数公式(类似低通,但分子不同):
b0=1+cos(ω0)2,b1=−(1+cos(ω0)),b2=1+cos(ω0)2,a0=1+α,a1=−2cos(ω0),a2=1−α.\begin{aligned} b_0 &= \frac{1 + \cos(\omega_0)}{2}, \\ b_1 &= -(1 + \cos(\omega_0)), \\ b_2 &= \frac{1 + \cos(\omega_0)}{2}, \\ a_0 &= 1 + \alpha, \\ a_1 &= -2\cos(\omega_0), \\ a_2 &= 1 - \alpha. \end{aligned}b0b1b2a0a1a2=21+cos(ω0),=−(1+cos(ω0)),=21+cos(ω0),=1+α,=−2cos(ω0),=1−α.
3. 带通滤波器(Band-pass)
- 中心频率:f0f_0f0
- 带宽:BWBWBW
- 计算公式:
ω0=2πf0fs,α=sin(ω0)2Q,Q=f0BW\omega_0 = 2\pi \frac{f_0}{f_s}, \quad \alpha = \frac{\sin(\omega_0)}{2Q}, \quad Q = \frac{f_0}{BW}ω0=2πfsf0,α=2Qsin(ω0),Q=BWf0
b0=α,b1=0,b2=−α,a0=1+α,a1=−2cos(ω0),a2=1−α.\begin{aligned} b_0 &= \alpha, \\ b_1 &= 0, \\ b_2 &= -\alpha, \\ a_0 &= 1 + \alpha, \\ a_1 &= -2\cos(\omega_0), \\ a_2 &= 1 - \alpha. \end{aligned}b0b1b2a0a1a2=α,=0,=−α,=1+α,=−2cos(ω0),=1−α.
4. 带阻滤波器(Notch)
- 系数公式(与带通类似,但分子为 1−2cos(ω0)z−1+z−21 - 2\cos(\omega_0) z^{-1} + z^{-2}1−2cos(ω0)z−1+z−2):
b0=1,b1=−2cos(ω0),b2=1,a0=1+α,a1=−2cos(ω0),a2=1−α.\begin{aligned} b_0 &= 1, \\ b_1 &= -2\cos(\omega_0), \\ b_2 &= 1, \\ a_0 &= 1 + \alpha, \\ a_1 &= -2\cos(\omega_0), \\ a_2 &= 1 - \alpha. \end{aligned}b0b1b2a0a1a2=1,=−2cos(ω0),=1,=1+α,=−2cos(ω0),=1−α.
实际应用示例
假设设计一个 低通滤波器:
- 采样率fs=48kHzf_s = 48\text{kHz}fs=48kHz
- 截止频率 fc=1kHzf_c = 1\text{kHz}fc=1kHz
- Q=0.707Q = 0.707Q=0.707 (Butterworth)
计算步骤:
- 计算 ω0=2π100048000≈0.1309\omega_0 = 2\pi \frac{1000}{48000} \approx 0.1309ω0=2π480001000≈0.1309
- 计算 α=sin(0.1309)2×0.707≈0.0924\alpha = \frac{\sin(0.1309)}{2 \times 0.707} \approx 0.0924α=2×0.707sin(0.1309)≈0.0924
- 代入低通公式,得到系数(归一化后):
b0=0.0089,b1=0.0178,b2=0.0089,a1=−1.8521,a2=0.8482.\begin{aligned} b_0 &= 0.0089, \\ b_1 &= 0.0178, \\ b_2 &= 0.0089, \\ a_1 &= -1.8521, \\ a_2 &= 0.8482. \end{aligned}b0b1b2a1a2=0.0089,=0.0178,=0.0089,=−1.8521,=0.8482.
注意事项
- 稳定性:确保a12<4a2a_1^2 < 4a_2a12<4a2(极点在单位圆内)。
- 量化误差:在定点实现时,注意系数量化对频率响应的影响。
- 工具辅助:使用 MATLAB(
biquad
函数)、Python(scipy.signal.bilinear
)或在线计算器(如 earlevel.com)验证。
如果需要具体参数的系数计算,请提供滤波器类型、截止频率、采样率和 ( Q ) 值!