IIR peaking filter 探秘
引言
一阶滤波器虽好,但是只能压一头,如果需要带通/带阻/peaking/notch一类的IIR滤波器,多需要高阶来帮忙了,本文先介绍一下peaking 滤波器的基本概念,peaking 滤波器是audio音频的parametric equalizer的基本单元,了解了它,我们就是可以一窥神奇和parametric equalizer了。
带通变peaking
首先我们还是给出前文得到的带通滤波器传递函数:
H
(
s
)
=
B
W
s
s
2
+
Ω
m
2
+
B
W
s
H(s) = \frac{BWs}{s^2+\Omega_m ^2+BWs}
H(s)=s2+Ωm2+BWsBWs
带宽和通带中频如下定义
B
W
=
Ω
h
−
Ω
l
BW= \Omega_h- \Omega_l
BW=Ωh−Ωl
Ω
m
=
Ω
h
∗
Ω
l
\Omega_m=\sqrt{ \Omega_h* \Omega_l}
Ωm=Ωh∗Ωl
实际当中客户会提出品质因数Q来限定
Ω
m
\Omega_m
Ωm与
Ω
h
Ω
l
\Omega_h \Omega_l
ΩhΩl的关系:
Q
=
Ω
m
Ω
h
−
Ω
l
=
Ω
m
B
W
Q=\frac{\Omega_m}{ \Omega_h- \Omega_l}=\frac{\Omega_m}{ BW}
Q=Ωh−ΩlΩm=BWΩm
按照两步走的方法导出一个peaking 滤波器:
第一步:给带通增加一个增益控制旋钮(系数)
我们定义一个系数
B
0
B_0
B0,令带通滤波器的通带增益可调。
H
(
s
)
=
B
0
∗
B
W
s
s
2
+
Ω
m
2
+
B
W
s
H(s) = \frac{ B_0*BWs}{s^2+\Omega_m ^2+BWs}
H(s)=s2+Ωm2+BWsB0∗BWs
第二步:并联一个直通信号 y(n)= x(n)
并联直通信号的结果是传递函数,当s=0时,
∣
H
(
s
)
∣
=
1
+
B
0
|H(s)|=1+B_0
∣H(s)∣=1+B0;当s=
∞
\infty
∞,|H(s)|=1。截止频率
Ω
c
\Omega_c
Ωc。下面是传递函数的数学表达:
H
(
s
)
=
1
+
B
0
∗
B
W
s
s
2
+
Ω
m
2
+
B
W
s
=
s
2
+
Ω
m
2
+
(
1
+
B
0
)
∗
B
W
s
s
2
+
Ω
m
2
+
B
W
s
H(s) =1+\frac{ B_0*BWs}{s^2+\Omega_m ^2+BWs} =\frac{ s^2+\Omega_m ^2+(1+B_0)*BWs}{s^2+\Omega_m ^2+BWs}
H(s)=1+s2+Ωm2+BWsB0∗BWs=s2+Ωm2+BWss2+Ωm2+(1+B0)∗BWs
peaking滤波器也可以理解为带有增益的带通滤波器和直联信号的并联形式。那么notch 滤波器可以通过带阻并联直通来实现吗?答案是否定的,其实notch 滤波器和peaking滤波器可以根据
B
0
B_0
B0调整增益来实现。
双线性变换到数字域
数字滤波器的通带中心频率:
ω
m
=
2
π
f
m
f
s
\omega_m =\frac{2\pi f_m}{f_s}
ωm=fs2πfm
预设Q值,我们可以得到带宽:
B
W
=
Ω
m
Q
BW=\frac{\Omega_m}{Q}
BW=QΩm
代入先整理一下我们的传递函数:
H
(
s
)
=
s
2
+
Ω
m
2
+
(
1
+
B
0
)
∗
Ω
m
Q
s
s
2
+
Ω
m
2
+
Ω
m
Q
s
H(s) =\frac{ s^2+\Omega_m ^2+(1+B_0)*\frac{\Omega_m}{Q}s}{s^2+\Omega_m ^2+\frac{\Omega_m}{Q}s}
H(s)=s2+Ωm2+QΩmss2+Ωm2+(1+B0)∗QΩms
H
(
s
)
=
s
2
+
Ω
m
2
+
(
1
+
B
0
)
∗
Ω
m
Q
s
s
2
+
Ω
m
2
+
Ω
m
Q
s
H(s) =\frac{ s^2+\Omega_m ^2+(1+B_0)*\frac{\Omega_m}{Q}s}{s^2+\Omega_m ^2+\frac{\Omega_m}{Q}s}
H(s)=s2+Ωm2+QΩmss2+Ωm2+(1+B0)∗QΩms
数字和模拟频率的转换关系:
Ω
m
=
ω
m
T
\Omega_m = \frac{\omega_m}{T}
Ωm=Tωm
双线性变换一般要求对频率作预畸变处理,采用如下公式:
Ω
m
=
2
T
tan
ω
c
2
\Omega_m = \frac{2}{T}\tan{\frac{\omega_c}{2}}
Ωm=T2tan2ωc
带入双线性变换公式:
s
=
2
T
1
−
z
−
1
1
+
z
−
1
和
ω
m
=
2
π
f
m
f
s
s =\frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}} 和 \omega_m =\frac{2\pi f_m}{f_s}
s=T21+z−11−z−1和ωm=fs2πfm
直接变换我们得到
H
(
s
)
=
(
1
+
(
f
m
π
f
s
)
2
+
(
1
+
B
0
)
π
f
m
Q
f
s
)
+
2
(
(
f
m
π
f
s
)
2
−
1
)
z
−
1
+
(
1
+
(
f
m
π
f
s
)
2
−
(
1
+
B
0
)
π
f
m
Q
f
s
)
z
−
2
(
1
+
(
f
m
π
f
s
)
2
+
π
f
m
Q
f
s
)
+
2
(
(
f
m
π
f
s
)
2
−
1
)
z
−
1
+
(
1
+
(
f
m
π
f
s
)
2
−
π
f
m
Q
f
s
)
z
−
2
=
Y
(
Z
)
X
(
Z
)
H(s) =\frac{(1+(\frac{f_m\pi}{f_s})^2+\frac{(1+B_0)\pi f_m}{Qf_s})+2((\frac{f_m\pi}{f_s})^2-1)z^{-1}+(1+(\frac{f_m\pi}{f_s})^2-\frac{(1+B_0)\pi f_m}{Qf_s})z^{-2}}{(1+(\frac{f_m\pi}{f_s})^2+\frac{\pi f_m}{Qf_s})+2((\frac{f_m\pi}{f_s})^2-1)z^{-1}+(1+(\frac{f_m\pi}{f_s})^2-\frac{\pi f_m}{Qf_s})z^{-2}}=\frac{Y(Z)}{X(Z)}
H(s)=(1+(fsfmπ)2+Qfsπfm)+2((fsfmπ)2−1)z−1+(1+(fsfmπ)2−Qfsπfm)z−2(1+(fsfmπ)2+Qfs(1+B0)πfm)+2((fsfmπ)2−1)z−1+(1+(fsfmπ)2−Qfs(1+B0)πfm)z−2=X(Z)Y(Z)
我们令
a
=
1
+
(
f
m
π
f
s
)
2
+
π
f
m
Q
f
s
a=1+(\frac{f_m\pi}{f_s})^2+\frac{\pi f_m}{Qf_s}
a=1+(fsfmπ)2+Qfsπfm,
b
=
π
f
m
f
s
b=\frac{\pi f_m}{f_s}
b=fsπfm,将上式简化如下
H
(
s
)
=
(
1
+
B
0
b
Q
a
)
+
2
(
b
2
−
1
a
)
z
−
1
+
(
1
−
(
2
+
B
0
)
b
Q
a
)
z
−
2
1
+
2
(
b
2
−
1
a
)
z
−
1
+
(
1
−
2
b
Q
a
)
z
−
2
H(s) =\frac{(1+\frac{B_0b}{Qa})+2(\frac{b^2-1}{a})z^{-1}+(1-\frac{(2+B_0)b}{Qa})z^{-2}}{1+2(\frac{b^2-1}{a})z^{-1}+(1-\frac{2b}{Qa})z^{-2}}
H(s)=1+2(ab2−1)z−1+(1−Qa2b)z−2(1+QaB0b)+2(ab2−1)z−1+(1−Qa(2+B0)b)z−2
这个系数计算比之一阶要复杂了非常多,也为频域分析和增益计算增加了难度。这时该方程只需要客户的中心频率和Q值。双线性变换、差分方程略。
频域分析
利用Octave开源的工具,我们设定采样频率
f
s
f_s
fs=48000Hz和频率
f
m
f_m
fm=6000Hz,Q=10,
B
0
B_0
B0=0.414 绘出
H
(
z
)
H(z)
H(z)频域响应曲线:
可以看出
ω
m
=
2
π
f
m
f
s
=
π
4
\omega_m=2\pi\frac{fm}{fs}=\frac{\pi}{4}
ωm=2πfsfm=4π的中心频率被加强了,不过该滤波器的
1
+
B
0
=
G
1+B_0=G
1+B0=G的条件不成立了,实际增益到了27dB,还有一个就是高低频也没有完全收敛到0dB。
结论
至此,我们二阶的IIR peaking滤波器设计完成,本文只为理解Peaking滤波器的一些基本原理,实际应用中有很多成熟的peaking filter的设计方法可以参考,有兴趣的同学可以自己去寻找和比较。