zl程序教程

您现在的位置是:首页 > 

当前栏目

Butterworth 滤波器s函数及z变换 Part2

函数 变换 滤波器 Part2
2023-06-13 09:11:39 时间

“ 前篇文章介绍了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程序中常用的是第三种:双线性变换。但在双线性变换前,还有一个预畸变过程,将在接下来的文章中介绍。


有问题请指正,谢谢!