“ 前篇文章介绍了Butterworth滤波器的s函数及其推导,本篇将以一个2阶Butterworh滤波器实例具体介绍两部分内容:极点和传递函数的关系、s函数z变换的三种方法”
01
—
2阶Butterworth滤波器实例
采样频率Fs=4000Hz,截止频率fc=80Hz,2阶Butterworth滤波的公式,如图1:
图1
取N=2,即2阶Butterworth滤波器的公式,如图2:
图2
该滤波器有两个极点:p1 和 p2;没有零点。
特别注意:一般来讲,s=jw,文章为了书写方便,令s=jw/wc
02
—
极点和传递函数的关系
图2中的公式 H(s),分母是两个矢量(s-p1) 和(s-p2)的乘积,1除以这两个矢量的模(即长度)的乘积,即传递函数 H(s) 的幅频曲线,如图3。
图3左图中:
红色虚线箭头 --> :自变量 s=jw/wc 的矢量;
蓝色虚线箭头 --> :极点p1的矢量;
绿色虚线箭头 --> :极点p2的矢量;
蓝色实线箭头 —> :s-p1的矢量;
绿色实线箭头 —> :s-p2的矢量;
幅频曲线 = 1 /(蓝色实线箭头长度*绿色实线箭头长度),如图3。
图3
不断变换f的值(即不断变换 f/fc 或w/wc的值),相当于红色虚线箭头不断向上延伸,即得到幅频特性曲线,如图4动图。
图4
可见,f/fc(或w/wc)越大,传递函数的幅值越接近0。
当然,仅知道s表示的函数是不够的,需要将s函数进行z变换,从而将传递函数表示成以z表示的零点和极点,才可以构造实时的滤波器。
03
—
s函数的z变换
将jw替换成z(即离散变换),常用三种方法,在此之前,先介绍几个概念,如图5。
图5
1)一阶向前差分法:
1.1) 利用泰勒公式理解:
图6
*对于离散信号,Δt很小,所以可以去掉高阶次。
1.2) 利用曲线导数理解:
图7
图8
2)一阶向后差分法:
2.1)利用泰勒公式理解:
图9
2.2)利用曲线导数理解:
图10
图11
3)双线性变换法:
3.1)利用泰勒公式理解:
图12
3.2)利用曲线导数理解:
图13
以上,即是将jw替换成z(即离散变换),常用的三种方法:
04
—
下篇内容
对于Butterworth滤波器,Matlab和Python程序中常用的是第三种:双线性变换。但在双线性变换前,还有一个预畸变过程,将在接下来的文章中介绍。
有问题请指正,谢谢!