全文字数895 | 阅读需要3分钟
关键词:IIR滤波器、系统函数、双线性变换法、MATLAB
导读:
IIR(Infinite Impulse Response)滤波器是无限长冲击响应滤波器【1】【2】。IIR滤波器的设计主要是利用模拟滤波器成熟的设计理论来进行设计的,因而保留了一些典型模拟滤波器优良的幅度特性,特别是双线性变换法没有频率混叠,效果很好【3】【4】。
图 1 IIR滤波器的幅频响应
IIR滤波器的特点
IIR滤波器有以下几个特点【3】:
系统的单位冲击响应h(n)无限长。
系统函数H(z)在有限z平面(0<|z|<∞)上有极点存在。
存在输出到输入的反馈,递归型结构。
IIR滤波器的结构类型
IIR滤波器的系统函数为【5】:
IIR滤波器有四种基本结构,直接I型、直接II型、级联型、并联型结构【3】。本章节简单介绍一下直接I型、直接II型和级联型。
直接I型:假设M=N,将H(z)转换为H1(z)和H2(z)的级联,得到直接I型结构【5】:
图 2 直接I型结构
直接II型:对于一个线性非移变系统,若交换其级联子系统的次序,系统函数不变。将直接I型结构的H1(z)和H2(z)交换级联次序并合并延时器就可以得到直接II型结构【5】:
图 3 直接II型结构
级联型:将系统函数做一点变换,拆开每项系数,可以表示成多个实系数的二阶子系统Hi(z)的连乘积形式【5】:
可以得到级联型结构:
图 4 级联型结构
如何用MATLAB设计IIR滤波器
打开MATLAB,在命令行输入:filterDesigner或者fdatool,就会跳出滤波器设计界面,根据自己的需求配置对应的参数【4】:
图 5 滤波器设计
设计完滤波器后,在工具栏文件(File)的下拉菜单选择Export可以导出滤波器系数,得到矩阵SOS(second-order section)和G(Gain),对应于IIR滤波器的级联型结构。通过sos2tf函数可以将级联型结构的滤波器系数转为直接I、II型结构对应的滤波器系数【6】。
参考
FIR滤波器百度百科:
https://baike.baidu.com/item/FIR%E6%BB%A4%E6%B3%A2%E5%99%A8/1983543?fr=aladdin
FIR滤波器维基百科:
https://en.wikipedia.org/wiki/Finite_impulse_response
朱冰莲. 数字信号处理[M]. 北京:电子工业出版社,2010
如何快速设计一个IIR滤波器
https://zhuanlan.zhihu.com/p/51097798
IIR滤波器的FPGA实现
https://www.jianshu.com/p/4a51ba7c922d
MATLAB sos2tf函数帮助文档