当前栏目
Butterworth 滤波器s函数及z变换 Part2
“ 前篇文章介绍了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程序中常用的是第三种:双线性变换。但在双线性变换前,还有一个预畸变过程,将在接下来的文章中介绍。
有问题请指正,谢谢!
相关文章
- python小波变换 wavedec2函数 各个返回值详解「建议收藏」
- Clamp()、Max() 和 Min() CSS 函数的用例
- 【Android 逆向】函数拦截 ( GOT 表拦截 与 插桩拦截 | 插桩拦截简介 | 插桩拦截涉及的 ARM 和 x86 中的跳转指令 )
- 【数字信号处理】序列傅里叶变换 ( 傅里叶变换实例 | 矩形窗函数 | 傅里叶变换 | 傅里叶变换幅频特性 | 傅里叶变换相频特性 )
- 【Kotlin】函数式编程 ① ( 函数式编程简介 | 高阶函数 | 函数类别 | Transform 变换函数 | 过滤函数 | 合并函数 | map 变换函数 | flatMap 变换函数 )
- python全栈开发-Day13 内置函数详解编程语言
- MySQL函数封装:提高效率、优化程序(mysql函数封装)
- 使用MySQL的IF函数进行多条件判断(mysql的if函数)
- Oracle中截取函数的应用(oracle之截取函数)
- 掌握oracle语句中的MID函数(oracle中mid函数)
- asp读取文件和保存文件函数代码
- JavaScriptEval函数使用
- php中判断文件空目录是否有读写权限的函数代码
- Python的lambda匿名函数的简单介绍
- 深入解析php中的foreach函数
- javascript使用isNaN()函数判断变量是否为数字
- php中filter_input函数用法分析
- php使用fputcsv()函数csv文件读写数据的方法