一阶IIR数字滤波器的设计

一阶IIR数字滤波器的设计

  • 最简单的低通滤波器传递函数入手
    • 对原始滤波器的改造
    • 低通变高通
    • 低通变带通
    • 高通变带阻
  • 从模拟到数字,采用双线性变换,简单方便
  • 频域分析
  • 结论

最简单的低通滤波器传递函数入手

万事开头难,所以我们先研究这个最简单的滤波器传递函数:
H ( s ) = 1 1 + s H(s) = \frac{1}{1+s} H(s)=1+s1

这是一个最简单的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 fc, 通过这个函数可以轻松的搞定截止频率的问题,看上去我们的这个巴特沃兹一阶滤波器好像可以用了。

低通变高通

用s= 1 s \frac{1}{s} s1 带入上面的公式,就会得到高通滤波器了。
H ( s ) = Ω c s Ω c s + 1 H(s) = \frac{\Omega_c s}{\Omega_c s+1} H(s)=Ωcs+1Ωcs
可以直观的观察当s=0时, |H(s)|=0;当s= ∞ \infty ,|H(s)|=1。那此时的截止频率该怎么算,还是 Ω c \Omega_c Ωc=2 π \pi π f c f_c fc吗?答案当然是否定的了,我们定义高通截止频率 Ω h \Omega_h Ωh= 1 Ω c \frac{1}{\Omega_c} Ωc1,显然,之前在 设计低通的时候确定的截止频率要取倒数了,或者干脆放弃 Ω c \Omega_c Ωc 1 Ω h \frac{1}{\Omega_h} Ωh1=2 π \pi π f h f_h fh,我们得到 f h f_h fh= 1 2 π Ω h \frac{1}{2\pi\Omega_h} 2πΩh1
当然,我们可以用另一个直观的表达来重写这个传递函数
H ( s ) = s s + Ω h H(s) = \frac{s}{s+\Omega_h} H(s)=s+Ωhs
可以看出 Ω h \Omega_h Ωh就是截止频率了。

低通变带通

低通变带通要比之前变高通复杂了,替换公式
s = s 2 + Ω m 2 B W s s = \frac{s^2+\Omega_m ^2}{BWs} s=BWss2+Ωm2
代入最原始的低通滤波器,我们会得到如下传递函数
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
数学推算,留给读者自己吧,我也没有推出来,以后理清了再补上。

高通变带阻

高通变带阻,一样的替换公式,
s = s 2 + Ω c 2 B W s s = \frac{s^2+\Omega_c ^2}{BWs} s=BWss2+Ωc2
带入如下初始的高通滤波器
H ( s ) = s s + 1 H(s) = \frac{s}{s+1} H(s)=s+1s
得到如下传递函数
H ( s ) = s 2 + Ω m 2 s 2 + Ω m 2 + B W s H(s) = \frac{s^2+\Omega_m ^2}{s^2+\Omega_m ^2+BWs} H(s)=s2+Ωm2+BWss2+Ωm2

从模拟到数字,采用双线性变换,简单方便

假设我们需要为外放输出的数字音频作一个高通滤波器,截止频率在400Hz,采样频率48000Hz,第一章我们已经有了一个原型: H ( s ) = s s + 1 H(s) = \frac{s}{s+1} H(s)=s+1s
数字滤波器的截止频率计算公式: ω c = 2 π f f s \omega_c =\frac{2\pi f}{f_s} ωc=fs2π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=T2tan2ω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=fs2πf=60π0.05236
直接变换
Ω c = ω c T ≈ 0.05236 T \Omega_c = \frac{\omega_c}{T}\approx \frac{0.05236}{T} Ωc=TωcT0.05236
预压缩变换
Ω 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=T2tan2ωcT0.05236
居然两个结果算得一样,哈哈。做如下代换 s = s Ω c {s=\frac{s}{\Omega_c}} s=Ωcs我们得到如下传递函数 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+ss=0.05236+sTsT
最后用双线性变换公式: 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=T2z+1z1=T21+z11z1把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}} H1(z)=1.026180.97371z11z1

频域分析

利用Octave开源的工具,几乎可以替换Matlab, H ( z ) H(z) H(z)绘出频域响应曲线
一阶IIR数字滤波器的设计_第1张图片
至此,我们一阶的高通滤波器的系数已经得出。

结论

我们用最简单的模拟低通滤波器推导出一个简单的数字高通滤波器,基本满足假设的使用要求。本文主要参考了《Real-Time Digital Signal Processing Fundamentals, Implementations and Applications》,其他内容如有纰漏欢迎回复指正,谢谢。

你可能感兴趣的:(滤波器)