最简单的低通滤波器传递函数入手
万事开头难,所以我们先研究这个最简单的滤波器传递函数:
H
(
s
)
=
1
1
+
s
H(s) = \frac{1}{1+s}
H ( s ) = 1 + s 1
这是一个最简单的1阶低通滤波器的传递函数,当s=0时, |H(s)|=1;当s=
∞
\infty
∞ ,|H(s)|=0。首先我们需要确定这个滤波器的截止频率,分析连续时间域的傅氏变换形式:
H
(
j
Ω
)
=
1
1
+
j
Ω
H(j\Omega) = \frac{1}{1+j\Omega}
H ( j Ω ) = 1 + j Ω 1 求|H(j
Ω
\Omega
Ω )|=1/
2
\sqrt 2
2
等价于求
Ω
=
1
\Omega=1
Ω = 1 ,
Ω
\Omega
Ω =2
π
\pi
π f,所以此滤波器的-3db截止频率是f=1/2
π
\pi
π =0.159 Hz。这个恐怕是没办法满足大部分要求的。
对原始滤波器的改造
H
(
s
)
=
Ω
c
Ω
c
+
s
H(s) = \frac{\Omega_c}{\Omega_c+s}
H ( s ) = Ω c + s Ω c 这里
Ω
c
\Omega_c
Ω c =2
π
\pi
π
f
c
f_c
f c , 通过这个函数可以轻松的搞定截止频率的问题,看上去我们的这个巴特沃兹一阶滤波器好像可以用了。
低通变高通
用s=
1
s
\frac{1}{s}
s 1 带入上面的公式,就会得到高通滤波器了。
H
(
s
)
=
Ω
c
s
Ω
c
s
+
1
H(s) = \frac{\Omega_c s}{\Omega_c s+1}
H ( s ) = Ω c s + 1 Ω c s 可以直观的观察当s=0时, |H(s)|=0;当s=
∞
\infty
∞ ,|H(s)|=1。那此时的截止频率该怎么算,还是
Ω
c
\Omega_c
Ω c =2
π
\pi
π
f
c
f_c
f c 吗?答案当然是否定的了,我们定义高通截止频率
Ω
h
\Omega_h
Ω h =
1
Ω
c
\frac{1}{\Omega_c}
Ω c 1 ,显然,之前在 设计低通的时候确定的截止频率要取倒数了,或者干脆放弃
Ω
c
\Omega_c
Ω c ,
1
Ω
h
\frac{1}{\Omega_h}
Ω h 1 =2
π
\pi
π
f
h
f_h
f h ,我们得到
f
h
f_h
f h =
1
2
π
Ω
h
\frac{1}{2\pi\Omega_h}
2 π Ω h 1 。 当然,我们可以用另一个直观的表达来重写这个传递函数
H
(
s
)
=
s
s
+
Ω
h
H(s) = \frac{s}{s+\Omega_h}
H ( s ) = s + Ω h s 可以看出
Ω
h
\Omega_h
Ω h 就是截止频率了。
低通变带通
低通变带通要比之前变高通复杂了,替换公式
s
=
s
2
+
Ω
m
2
B
W
s = \frac{s^2+\Omega_m ^2}{BW}
s = B W s 2 + Ω m 2 代入最原始的低通滤波器,我们会得到如下传递函数
H
(
s
)
=
B
W
s
2
+
Ω
m
2
+
B
W
H(s) = \frac{BW}{s^2+\Omega_m ^2+BW}
H ( s ) = s 2 + Ω m 2 + B W B W 数学推算,留给读者自己吧,我也没有推出来,以后理清了再补上。
高通变带阻
高通变带阻,一样的替换公式,
s
=
s
2
+
Ω
c
2
B
W
s = \frac{s^2+\Omega_c ^2}{BW}
s = B W s 2 + Ω c 2 带入如下初始的高通滤波器
H
(
s
)
=
s
s
+
1
H(s) = \frac{s}{s+1}
H ( s ) = s + 1 s 得到如下传递函数
H
(
s
)
=
s
2
+
Ω
m
2
s
2
+
Ω
m
2
+
B
W
H(s) = \frac{s^2+\Omega_m ^2}{s^2+\Omega_m ^2+BW}
H ( s ) = s 2 + Ω m 2 + B W s 2 + Ω m 2
从模拟到数字,采用双线性变换,简单方便
假设我们需要为外放输出的数字音频作一个高通滤波器,截止频率在400Hz,采样频率48000Hz,第一章我们已经有了一个原型:
H
(
s
)
=
s
s
+
1
H(s) = \frac{s}{s+1}
H ( s ) = s + 1 s 数字滤波器的截止频率计算公式:
ω
c
=
2
π
f
f
s
\omega_c =\frac{2\pi f}{f_s}
ω c = f s 2 π f
数字和模拟频率的转换关系:
Ω
c
=
ω
c
T
\Omega_c = \frac{\omega_c}{T}
Ω c = T ω c 双线性变换一般要求对频率作预畸变处理,采用如下公式:
Ω
c
=
2
T
tan
ω
c
2
\Omega_c = \frac{2}{T}\tan{\frac{\omega_c}{2}}
Ω c = T 2 tan 2 ω c 以400Hz截止频率和48000Hz采样率来计算:
ω
c
=
2
π
f
f
s
=
π
60
≈
0.05236
\omega_c =\frac{2\pi f}{f_s}=\frac{\pi}{60}\approx 0.05236
ω c = f s 2 π f = 6 0 π ≈ 0 . 0 5 2 3 6 直接变换
Ω
c
=
ω
c
T
≈
0.05236
T
\Omega_c = \frac{\omega_c}{T}\approx \frac{0.05236}{T}
Ω c = T ω c ≈ T 0 . 0 5 2 3 6 预压缩变换
Ω
c
=
2
T
tan
ω
c
2
≈
0.05236
T
\Omega_c = \frac{2}{T}\tan{\frac{\omega_c}{2}} \approx \frac{0.05236}{T}
Ω c = T 2 tan 2 ω c ≈ T 0 . 0 5 2 3 6 居然两个结果算得一样,哈哈。做如下代换
s
=
s
Ω
c
{s=\frac{s}{\Omega_c}}
s = Ω c s 我们得到如下传递函数
H
(
s
)
=
s
Ω
c
+
s
=
s
T
0.05236
+
s
T
H(s) = \frac{s}{\Omega_c+s}= \frac{sT}{0.05236 +sT}
H ( s ) = Ω c + s s = 0 . 0 5 2 3 6 + s T s T 最后用双线性变换公式:
s
=
2
T
z
−
1
z
+
1
=
2
T
1
−
z
−
1
1
+
z
−
1
s = \frac{2}{T} \frac{z-1}{z+1}=\frac{2}{T} \frac{1-z^{-1}}{1+z^{-1}}
s = T 2 z + 1 z − 1 = T 2 1 + z − 1 1 − z − 1 把s域映射到z域:
H
1
(
z
)
=
1
−
z
−
1
1.02618
−
0.97371
z
−
1
H_1(z) = \frac{1-z^{-1}}{1.02618-0.97371z^{-1}}
H 1 ( z ) = 1 . 0 2 6 1 8 − 0 . 9 7 3 7 1 z − 1 1 − z − 1
频域分析
利用Octave开源的工具,几乎可以替换Matlab,
H
(
z
)
H(z)
H ( z ) 绘出频域响应曲线 至此,我们一阶的高通滤波器的系数已经得出。
结论
我们用最简单的模拟低通滤波器推导出一个简单的数字高通滤波器,基本满足假设的使用要求。本文主要参考了《Real-Time Digital Signal Processing Fundamentals, Implementations and Applications》,其他内容如有纰漏欢迎回复指正,谢谢。