||
无限长脉冲响应IIR数字滤波器,是相较于有限长的FIR滤波器称呼的,在近期的课程中了解了滤波器的相关特性以及分类,因此对IIR数字滤波器做了一个深入浅出的汇报,望大家批评指正
首先,本科阶段的毕业设计课题做的是滤波器相关的仿真
对滤波器有了一个整体的认识,在对其结构进行建模,得到仿真结果并进行优化,这是第一次接触到滤波器。
当时优化得到的宽阻带效果,带通滤波器的通带内最小反射系数满足-10dB以下,最大传输系数满足-3dB以上
其次,是在总结前对滤波器进行了基本知识铺垫:
接下来,分别从三各大板块进行总结:
第一部分,IIR的结构之一:直接Ⅰ型结构
H1(z)为系统函数的分子项,即左半边前项支路,H2(z)为系统函数的分母项,即右半边反馈标志;
第一部分,IIR的结构之二:直接Ⅱ型结构
直接Ⅱ型就是将直接Ⅰ型的结构中交换H1(z)、H2(z)级联的顺序,合并两个共用一个延时器;
直接型优点:简单直观
直接型缺点:改变任意ak会影响极点,改变任意bk会影响零点
第一部分,IIR的结构之三:级联型结构
级联特点:每个基本节系数变化只影响该子系统的零极点
第一部分,IIR的结构之四:并联型结构
第二部分:设计方法之 间接设计
首先讲解脉冲响应不变法:
重点在于s平面与z平面的相互转换!公式如下:
其次在于极点的转换,举个如下例子:
但脉冲响应不变法 也会存在缺陷,由于滤波器不会严格限制带宽,故会产生频谱混叠
故针对脉冲响应法,总结如下优缺点:
因此为了进一步改进该滤波器性能,进而了解到另一种设计方法:双线性变换法
双线性变换法比脉冲响应不变法,多了一个步骤,即从非限带信号到限带信号的转变;
同时我们需要推到,从s域到z域的公式:
其中用到了欧拉公式,具体推导步骤可参考信号与系统一书;
因此,对比两种方法我们可以发现:
到此,第一部分间接设计IIR滤波器的大致步骤就是以上两种方法。
第二部分:设计方法之 直接设计,采用程序设计方法,用matlab实现
该方法,首先要确定滤波器的性能指标才能进行编程,同时matlab软件中已经包含滤波器相关的设计函数,我们只需要在程序中直接引用函数,不需要自己编写,这一点很方便。
此次的程序设计是采用脉冲响应不变法,根据巴特沃斯设计法,设计的低通滤波器,得到的频率响应图如上
第三部分:IIR应用示例,利用IIR处理脉搏信号
接下来,我们采用一个例子,具体看看怎么通过一个实际问题挖掘出滤波器所需的性能指标。
看到这里,提取出第三个信号:第一,正常人的脉搏信号在2-20Hz,这是我们需要的信号频率范围;
第二,脉搏信号中会掺杂0-1Hz的噪声信号,这是我们需要来过滤消除的,这是噪声信号;
第三,要通过2-20Hz的高频信号,过滤0-1hHz的低频信号,因此我们需要设计 高通滤波器(阻低通高);
在提取出需要的性能指标之后,紧接着需要推导数字高通滤波器的系统函数:
截止到这里,数字高通滤波器的系统函数就推导完成了
最后,再介绍matlab里面的一个fdatool滤波器函数设计工具箱,该工具箱不需要编程基础,是一个面向大众开放的免费设计软件,首先打开matlab软件,在命令行窗口中输入指令:fdatool(一定要是英文状态下,之这一点学编程的同学应该都要把握,很多时候程序报错不在于你的程序设计有问题,而是自己的输入法写入了中文状态,有时候肉眼不太容易观察出来,所以编写程序时一定要格外注意);输入命令后,按enter键执行,就可以得到以下界面:
此次,可在1框中选择你想要设计的滤波器类型(低通/高通/带通/带阻等),我们选择的高通;可在2框选择你要的滤波器设计函数(巴特沃斯/切比雪夫/贝塞尔等),我默认选择的巴特沃斯;可在3框里选择采样频率以及带通和带阻频率,按照刚才我们需要的参数,采样频率Fs=50Hz,脉搏信号的频率Fstop=2Hz,Fpass=20Hz,设置好参数之后,点击 Design Filter即可得到如图4 所示的频谱相应图,由图中可看出,0-2Hz之间的频率被滤除之后,脉搏信号2-20之间的频率都可以被通过而被采集到。
如有不正之处,请各位不吝赐教,欢迎讨论。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-19 23:21
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社