ShuangyanLiu的个人博客分享 http://blog.sciencenet.cn/u/ShuangyanLiu

博文

浅谈--无限长脉冲响应IIR数字滤波器

已有 6789 次阅读 2020-11-15 11:35 |个人分类:智能传感器|系统分类:科研笔记

无限长脉冲响应IIR数字滤波器,是相较于有限长的FIR滤波器称呼的,在近期的课程中了解了滤波器的相关特性以及分类,因此对IIR数字滤波器做了一个深入浅出的汇报,望大家批评指正

首先,本科阶段的毕业设计课题做的是滤波器相关的仿真

对滤波器有了一个整体的认识,在对其结构进行建模,得到仿真结果并进行优化,这是第一次接触到滤波器。

image.png

image.png

当时优化得到的宽阻带效果,带通滤波器的通带内最小反射系数满足-10dB以下,最大传输系数满足-3dB以上


其次,是在总结前对滤波器进行了基本知识铺垫:

image.png

接下来,分别从三各大板块进行总结:

image.png


第一部分,IIR的结构之一:直接Ⅰ型结构

image.png

H1(z)为系统函数的分子项,即左半边前项支路,H2(z)为系统函数的分母项,即右半边反馈标志;


第一部分,IIR的结构之二:直接Ⅱ型结构

image.png

直接Ⅱ型就是将直接Ⅰ型的结构中交换H1(z)、H2(z)级联的顺序,合并两个共用一个延时器;

直接型优点:简单直观

直接型缺点:改变任意ak会影响极点,改变任意bk会影响零点


第一部分,IIR的结构之三:级联型结构image.png

级联特点:每个基本节系数变化只影响该子系统的零极点


第一部分,IIR的结构之四:并联型结构

image.png

第二部分:设计方法之 间接设计

image.png

首先讲解脉冲响应不变法:

image.png

重点在于s平面与z平面的相互转换!公式如下:

image.png

其次在于极点的转换,举个如下例子:

image.png

但脉冲响应不变法 也会存在缺陷,由于滤波器不会严格限制带宽,故会产生频谱混叠

image.png

故针对脉冲响应法,总结如下优缺点:

image.png

因此为了进一步改进该滤波器性能,进而了解到另一种设计方法:双线性变换法

image.png

双线性变换法比脉冲响应不变法,多了一个步骤,即从非限带信号到限带信号的转变;


同时我们需要推到,从s域到z域的公式:

image.png

其中用到了欧拉公式,具体推导步骤可参考信号与系统一书;

因此,对比两种方法我们可以发现:
image.png

到此,第一部分间接设计IIR滤波器的大致步骤就是以上两种方法。 


第二部分:设计方法之 直接设计,采用程序设计方法,用matlab实现

image.png

该方法,首先要确定滤波器的性能指标才能进行编程,同时matlab软件中已经包含滤波器相关的设计函数,我们只需要在程序中直接引用函数,不需要自己编写,这一点很方便。

image.png

此次的程序设计是采用脉冲响应不变法,根据巴特沃斯设计法,设计的低通滤波器,得到的频率响应图如上


第三部分:IIR应用示例,利用IIR处理脉搏信号

接下来,我们采用一个例子,具体看看怎么通过一个实际问题挖掘出滤波器所需的性能指标。

image.png

看到这里,提取出第三个信号:第一,正常人的脉搏信号在2-20Hz,这是我们需要的信号频率范围;

第二,脉搏信号中会掺杂0-1Hz的噪声信号,这是我们需要来过滤消除的,这是噪声信号;

第三,要通过2-20Hz的高频信号,过滤0-1hHz的低频信号,因此我们需要设计 高通滤波器(阻低通高);

image.png

在提取出需要的性能指标之后,紧接着需要推导数字高通滤波器的系统函数:

image.png

image.png

截止到这里,数字高通滤波器的系统函数就推导完成了

最后,再介绍matlab里面的一个fdatool滤波器函数设计工具箱,该工具箱不需要编程基础,是一个面向大众开放的免费设计软件,首先打开matlab软件,在命令行窗口中输入指令:fdatool(一定要是英文状态下,之这一点学编程的同学应该都要把握,很多时候程序报错不在于你的程序设计有问题,而是自己的输入法写入了中文状态,有时候肉眼不太容易观察出来,所以编写程序时一定要格外注意);输入命令后,按enter键执行,就可以得到以下界面:

image.png

此次,可在1框中选择你想要设计的滤波器类型(低通/高通/带通/带阻等),我们选择的高通;可在2框选择你要的滤波器设计函数(巴特沃斯/切比雪夫/贝塞尔等),我默认选择的巴特沃斯;可在3框里选择采样频率以及带通和带阻频率,按照刚才我们需要的参数,采样频率Fs=50Hz,脉搏信号的频率Fstop=2Hz,Fpass=20Hz,设置好参数之后,点击 Design Filter即可得到如图4 所示的频谱相应图,由图中可看出,0-2Hz之间的频率被滤除之后,脉搏信号2-20之间的频率都可以被通过而被采集到。


如有不正之处,请各位不吝赐教,欢迎讨论。



https://blog.sciencenet.cn/blog-3452429-1258433.html

上一篇:python从零开始 - NumPy-ndarray 总结
收藏 IP: 113.140.6.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

全部作者的其他最新博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-28 03:28

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部