You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求解与Matlab二阶巴特沃斯带通滤波器匹配的解析滤波器增益系数Kpb

求解与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

火山引擎 最新活动