求解与Matlab二阶巴特沃斯带通滤波器匹配的解析滤波器增益系数Kpb
看起来你已经离目标很近了!你用二阶高通+二阶低通级联得到四阶带通的思路是对的,现在只需要算出合适的$K_{pb}$让通带增益回到0dB。我来一步步帮你梳理:
核心思路
我们需要让通带内(比如中心频率$f_c$处)的总增益为1(对应0dB),所以$K_{pb}$就是未乘增益时,级联滤波器在中心频率处幅度的倒数。
先理解你观察到的36dB来源
你提到高低通单独在各自截止频率处的增益是~18dB,这是因为对于你用的二阶高通/低通结构:
- 二阶高通$H_{hp}(s)=\frac{s2}{s2 + (\omega_l/Q)s + \omega_l2}$在截止频率$\omega_l$处,分母会简化为纯虚数$j\frac{\omega_l2}{Q}$,幅度是$\frac{\omega_l2}{Q}$,分子幅度是$\omega_l2$,所以增益是$Q$,转换成dB就是$20\log_{10}(Q)$。你的$Q=\frac{16}{17-15}=8$,所以$20\log_{10}(8)≈18.06dB$。
- 同理,二阶低通在$\omega_h$处的增益也是$Q$,所以两者单独看都是~18dB。但级联后在中心频率处的总增益是两个滤波器在该点的增益乘积,这个乘积的dB值才是你需要抵消的部分。
推导$K_{pb}$的计算公式
首先,你的级联传递函数是:
$$H(s) = K_{pb} \cdot \frac{\omega_h2}{s2 + (\omega_h/Q)s + \omega_h^2} \cdot \frac{s2}{s2 + (\omega_l/Q)s + \omega_l^2}$$
我们代入中心频率$s=j\omega_c$($\omega_c=2\pi f_c$),分别计算两个子滤波器的幅度:
1. 二阶低通在$\omega_c$处的幅度
$$|H_{lp}(j\omega_c)| = \frac{\omega_h2}{\sqrt{(\omega_h2 - \omega_c2)2 + \left(\frac{\omega_h \omega_c}{Q}\right)^2}}$$
2. 二阶高通在$\omega_c$处的幅度
$$|H_{hp}(j\omega_c)| = \frac{\omega_c2}{\sqrt{(\omega_c2 - \omega_l2)2 + \left(\frac{\omega_l \omega_c}{Q}\right)^2}}$$
3. 计算总幅度并求解$K_{pb}$
总幅度(未乘$K_{pb}$)是$|H_{lp}| \times |H_{hp}|$,令$K_{pb} \times |H_{lp}| \times |H_{hp}| = 1$,可得:
$$K_{pb} = \frac{1}{|H_{lp}(j\omega_c)| \times |H_{hp}(j\omega_c)|}$$
代入你的数值例子验证
你的参数:$f_c=16Hz$,$f_l=15Hz$,$f_h=17Hz$,$Q=8$:
- $\omega_c=32\pi$,$\omega_h=34\pi$,$\omega_l=30\pi$
- 计算$|H_{lp}|≈6.10$,$|H_{hp}|≈5.93$,乘积≈36.17
- 所以$K_{pb}≈1/36.17≈0.0276$
把这个$K_{pb}$代入你的传递函数,中心频率处的增益就会是1(0dB),和Matlab生成的滤波器匹配。
通用公式(基于你的Q定义)
如果需要通用表达式,代入$Q=\frac{f_c}{f_h-f_l}$,可以推导得到:
$$K_{pb} = \frac{\sqrt{1024Q^4 -256Q^2 +25}}{4Q2(2Q+1)2}$$
代入$Q=8$,结果和上面的数值计算一致,完全正确。
备注:内容来源于stack exchange,提问作者EricH




