基于Matlab的IIR滤波器的设计与仿真.docx
- 文档编号:23691324
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:20
- 大小:1.16MB
基于Matlab的IIR滤波器的设计与仿真.docx
《基于Matlab的IIR滤波器的设计与仿真.docx》由会员分享,可在线阅读,更多相关《基于Matlab的IIR滤波器的设计与仿真.docx(20页珍藏版)》请在冰豆网上搜索。
基于Matlab的IIR滤波器的设计与仿真
西南科技大学
专业方向设计报告
课程名称:
通信工程专业方向设计
设计名称:
基于Matlab的IIR滤波器的设计与仿真
姓名:
周书华
学号:
20096131
班级:
通信工程0903班
指导教师:
张红英
起止日期:
2012/11/22——2012/12/14
西南科技大学信息工程学院制
方向设计任务书
学生班级:
通信工程0903班学生姓名:
周书华学号:
20096131
设计名称:
基于Matlab的IIR滤波器的设计与仿真
起止日期:
2012/11/22——2012/12/14指导教师:
张红英
设计要求:
1)了解无限冲激响应IIR滤波器的传统设计与方法;
2)了解Matlab信号处理箱。
掌握FDATool专用滤波器设计分析工具;
3)利用Matlab设计一个10阶的带通ChebyshevI型滤波器,其通带范围是
100到200Hz,采样频率为1000Hz,幅值衰减Rp=0.5,画出其幅频、相频
和冲激响应;(自编Matlab程序和利用FDATool工具箱实现)
方向设计学生日志
时间
设计内容
2012/11/22-2012/11/29
学习数字信号处理教程,特别是关于IIR数字滤波器的部分
2012/11/30-2012/12/08
学习MATLAB应用软件,特别是其信号处理箱和Simuink
2012/12/09-2012/12/10
分析IIR数字滤波器的传统设计方法
2012/12/11
分别在MATLAB中编程设计和利用FDATool来设计IIR滤波器
2012/12/12
对设计的IIR进行仿真并分析
2012/12/13
完成专业设计报告的撰写
2012/12/14
答辩
基于Matlab的IIR滤波器的设计与仿真
一、摘要
传统的数字滤波器设计计算繁琐,尤其是设计高阶滤波器时工作量大,利用Matlab可以快速有效地实现数字滤波器的设计与仿真。
本文介绍了IIR数字滤波器的传统设计思想和步骤,同时也介绍了利用MATLAB对IIR数字滤波器进行设计的方法、设计的操作步骤以及对设计的滤波器的仿真。
二、设计目的和意义
1、通过此次专业方向设计,了解无限冲激响应IIR滤波器的传统设计方法;
2、了解Matlab信号处理箱并掌握FDATool专用滤波器设计分析工具;
3、学习如何使用Matlab,学会用Matlab解决实际问题。
三、设计原理
数字滤波器,是具有一定传输选择特性的数字信号处理装置,其输入和输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。
可以把它理解为是一个计算程序或算法,它把代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按照预定的形式变化。
数字滤波器有多种分类,从数字滤波器功能上分可分为低通、高通、带阻、带通滤波器,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。
1、无限冲激响应IIR滤波器及其传统设计方法
IIR滤波器的有理系统函数为:
(1)
表示这一系统输入输出关系的N阶差分方程为:
(2)
对照模拟滤波器的传递函数:
(3)
不难看出,IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。
模拟滤波器的设计在理论上已十分成熟,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的思路。
根据以上思路,首先设计一个模拟原型滤波器(截止频率为1rad/s的低通滤波器),然后在模拟域(S平面)进行频率变换,将模拟原形滤波器转换成所需类型(指定截止频率的低通、高通、带通、带阻)的模拟滤波器,再将其数字离散化,从S平面映射至Z平面,得到所需技术指标的数字滤波器。
(也可先将模拟原型离散化,得到数字原型滤波器,继而在数字域(Z平面)进行频率变换,得到所需类型的数字滤波器。
)
模拟滤波器到数字滤波器的转换可在时域进行也可在频域实现,时域转换的关键是要使数字滤波器与模拟滤波器时域响应的采样值相等,以保持其瞬态特性不变,常用的是冲激响应不变法。
频域变换法必须使得数字滤波器在
范围内的幅频特性与模拟滤波器在
范围内的幅频特性一致,即保证s平面与z平面上幅频特性的一一单值对应关系,常用的是脉冲响应不变法和双线性变换法。
IIR滤波器的传统设计方法思路清晰,步骤详尽,可参阅公式、手册循章而行。
但其计算非常繁琐,设计过程中要改变参数和滤波器类型时都要重新计算。
它需要反复的实验,需要设计者凭借经验设定参数,很多时候要根据设计要求和滤波效果不断调整,以达到设计的最优化。
在这种情况下,单纯的靠公式计算和编制简单的程序很难在短时间内完成。
2、IIR滤波器的Matlab设计
图1Matlab2012a主界面
Matlab是MATHWORK公司推出的一套面向科学和数值计算的可视化语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,是一个高度集成系统具有友好的用户界面和良好的帮助功能。
Matlab自带的信号处理工具箱(SignalProcessingToolbox)具有强大的信号处理和分析功能,利用Matlab软件优越的数字分析及仿真功能,对理解数字滤波器及数字滤波具有一定参考价值。
Matlab的信号处理工具箱中,提供了一整套模拟、数字滤波器的设计命令和运算函数,方便准确,简单易行,使得设计人员除了可按上述传统设计步骤快速地进行较复杂高阶选频滤波器的计算、分析外,还可通过原型变换法直接进行各种典型数字滤波器设计,即应用Matlab设计工具从模拟原型直接变换成满足原定频域指标要求的数字滤波器。
Matlab有两种途径来设计IIR数字滤波器,分别为FDATool界面设计和直接程序设计。
1)FDATool界面设计
FDATool是Matlab信号处理工具箱里专用的滤波器设计分析工具,其界面为滤波器的设计提供了一个交互式的设计环境,用户进行参数设置后,可以设计几乎所有的基本常规滤波器,包括IIR和FIR的各种设计方法,操作简单,方便灵活。
FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
图2FDATool界面
DesignFilter部分主要分为:
A、ResponseType(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。
B、DesignMethod(设计方法)选项,包括IIR滤波器的Butterwotth(巴特沃思)法、Chebyshev TypeI(切比雪夫I型)法、ChebyshevTypeII(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法;
C、FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数)和MinimumOrder(最小阶数)。
在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1)。
如果选择MinimumOrder,则MATLAB根据所选择的滤波器类型自动使用最小阶数;
D、FrequencySpecifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。
它的具体选项由FilterType选项和DesignMethod选项决定。
例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数。
E、MagnitudeSpecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
2)直接程序设计
在Matlab中,对各种滤波器的设计都有相应的函数,可以用来做滤波器程序设计。
比如,估计IIR数字滤波器的阶数N,相应的M文件为:
buttord用于巴特沃斯滤波器,cheb1ord用于切比雪夫1型滤波器,cheb2ord用于切比雪夫2型滤波器,ellipord用于椭圆滤波器。
对于基于双线性变换法的IIR滤波器设计,对应于四种逼近技术,相应的M文件为:
butter用于巴特沃斯滤波器的设计,cheby1用于切比雪夫1型滤波器的设计,cheby2用于切比雪夫2型滤波器的设计,ellip用于椭圆滤波器的设计。
同时,利用zp2tf可以由滤波器的零极点向量和标量增益因子得到传输函数分子和分母的系数向量。
利用函数zp2sos可以得到传输函数分子和分母系数向量的二次项因子。
计算出传输函数的系数之后,可以利用M文件freqz来计算频率响应,可以利用impz来计算冲激响应。
由于本设计,已经明确了要设计一个10阶的带通ChebyshevI型滤波器,注重介绍一下cheby1函数。
利用[b,a]=cheby1(n,Rp,Wn,‘ftype’)可以设计出阶数为n、截止频率为Wn、带通波纹最大衰减为Rp的数字低通滤波器。
其中参数ftype的形式决定了滤波器的形式,当它为high时得到滤波器为n阶的、截止频率为Wn的高通滤波器。
若Wn是一个含有两个元素向量[w1w2],则cheby1函数返回值是阶数为2n的带通滤波器的系统函数有理多项式的系数,通带范围是w1 3、Simulink仿真 Simulink是Matlab最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。 在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。 Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。 同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。 图3SimulinkLibraryBrowser界面 SimulinkLibraryBrowser(模型库浏览器),里面有大量的功能模块,比如示波器、加法器、离散正弦信号源等。 而这些功能模块,都可以编辑其参数。 仿真界面,新建立一个model,就可以进入仿真界面。 可以把SimulinkLibraryBrowser里面的功能模块拖动到model中,也可以在FDATool滤波器设计界面把设计好的滤波器导入到model中,然后对仿真框图进行编辑,仿真。 IIR滤波器仿真步骤: 打开SimulinkLibraryBrowser;新建一个model;在SimulinkLibraryBrowser中找到DSP离散正弦信号源、加法器以及示波器并拖到model中;再在FDATool界面把设计好的IIR滤波器导入到model中;在model中编辑仿真框图;在DSP离散信号模块中设定相关参数;最后进行仿真。 通过设定相关参数,观察仿真中的示波器的波形等,就可以分析出设计的IIR滤波器是否达到要求。 图4Simulink的model仿真界面 四、详细设计步骤 本专业方向设计,要求分别自编Matlab程序和利用FDATool工具箱设计一个10阶的带通ChebyshevI型滤波器,其通带范围是100到200Hz,采样频率为1000Hz,幅值衰减Rp=0.5。 并画出其幅频、相频和冲激响应。 1、自编Matlab程序进行设计 1)在MATLAB环境下运行该程序即可得到设计的IIR滤波器的时域冲激响应。 n=5;%阶数为10 Rp=0.5;%幅值衰减为0.5 Wn=[100200]/500;%频率缩放因子Wn [b,a]=cheby1(n,Rp,Wn);%返回H(z)的分子分母系数 [y,t]=impz(b,a,101);%冲激响应 stem(t,y,'.');grid; xlabel('Time(mseconds)');ylabel('Amplitude');title('ImpulseResponse'); 2)在MATLAB环境下运行该程序即可得到设计的IIR滤波器的幅频和相频。 n=5;%阶数为10 Rp=0.5;%幅值衰减为0.5 Wn=[100200]/500;%频率缩放因子Wn [b,a]=cheby1(n,Rp,Wn);%返回H(z)的分子分母系数 freqz(b,a,512,1000);%频率响应 2、利用FDATool进行设计 1)打开FDATool面板 在Matlab主界面: 点击左下角“Start”选项点击弹出界面的“Toolboxes”选项点击弹出界面“DSPSystem”选项 点击弹出界面“FilterDesign&AnalysisTool(fdatool)”选项。 通过以上步骤,便打开了FDATool界面。 图5如何打开FDATool界面 2)在FDATool界面中设计并保存IIR滤波器 在FilterType中选择Bandpass(带通滤波器);在DesignMethod选项中选择IIR,在相邻的右则选项中选择ChebyshevI(切比雪夫I型);指定FilterOrder项中的SpecifyOrder=10;在FrequencySpecifications中选择Unit为Hz,采样频率Fs=1000,通带Fpass1=100和Fpass2=200;在MagnitudeSpecifications中选择Unit为db,Apass=0.5。 点击DesignFilter即可得到所设计的IIR滤波器。 通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应和冲击响应等特性。 完成以上步骤,点击保存滤波器,保存名字为IIR_100_200.fda。 3、仿真 本文通过调用Simuink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。 1)搭建仿真图 a、新建一个model 在Matlab主界面新建一个model,并保存为IIRmodel.mdl; b、打开SimulinkLibraryBrowser 在model界面的工具栏有LibraryBrowser的图标; c、在SimulinkLibraryBrowser中寻找器件并拖动到model 仿真图需要一个scope(Simulink/Sinks/scope示波器),两个SineWave(Simulink/Sources/SineWaveDSP离散正弦信号源),一个Add(Sinulink/MathOperations/Add加法器); d、把设计好的滤波器导入到model中 FDATool界面中“File”“ExporttoSimulinkModel”“RealizeModel”; e、修改示波器scope为同时可以测试四个信号 双击model中的scope,在弹出界面点击设置按钮并编辑scope的参数“Numberofaxes”为4; f、按照图6连接各个功能模块。 图6IIR数字滤波器仿真框图 2)改变参数 分别改变SineWave、SineWave1的参数,以用不同的信号测试所设计的滤波器的滤波效果。 假定,信号s1=sin(pi*0.1*n);s2=sin(pi*0.2*n);s=s1+s3;即s为含有2个频率成分的信号(归一化频率(w/2 )分别为0.05、0.1)。 可用此信号来用所设计的滤波器滤除归一化频率为0.05的成分,以此检测滤波器的滤波效果。 则需要改变参数如下: a、修改仿真配置参数ConfigurationParameter 点击菜单中的Simulation并打开ConfigurationParameter,在弹出界面中更改仿真时间Simulationtime为0.0到1000.0; b、器件SineWave 双击SineWave,在弹出界面中,修改参数sinetype为timebased,修改frequency为0.2*pi,sampletime改为1; c、器件SineWave 双击SineWave1,在弹出界面中,修改参数sinetype为timebased,修改frequency为0.6*pi,sampletime改为1; 3)仿真改变参数继续仿真 所有环节都布置完成后,点击model中工具startsimulation的图标进行仿真。 根据仿真,查看scope示波器中的波形,分析仿真结果,并再次改变输入信号,改变SineWave、SineWave1的参数,再次进行仿真,分析直到了解了设计的IIR滤波器的滤波效果为止。 五、设计结果及分析 1、自编Matlab程序设计结果 运行程序,得到设计的IIR滤波器的相频、幅频以及冲击响应如下: 图7IIR数字滤波器(自编程设计)的冲激响应 图8IIR数字滤波器(自编程设计)的幅频(上)、相频(下) 2、FDATool界面设计结果 在FDATool界面,按照要求对IIR滤波器设计完成后,点击菜单选项Analysis下ImpulseResponse选项,得到IIR滤波器的冲激响应(图9),点击菜单选项Analysis下MagnitudeResponse选项,可以得到幅频(图10),点击菜单选项Analysis下PhaseResponse选项,可以得到相频(图11)。 图9IIR数字滤波器(FDATool设计)的冲激响应 图10IIR数字滤波器(FDATool设计)的幅频 图11IIR数字滤波器(FDATool设计)的相频 3、分析设计的IIR滤波器 根据结果可知,自编程与FDATool界面的IIR滤波器设计,得到的结果是一样的。 由图8(上)和图10可知,这种滤波器在100-200Hz的通带范围内是等波纹的,而在阻带中是单调的,这是ChebyshevI滤波器的幅频特性。 由图8(下)和图11可知,在100-200Hz的范围内相移较小,其曲线近似一条直线,失真较小;当频率超过这一范围时,相移较大,而且其曲线是非直线的,所以失真也较大。 由图7和图9得到了ChebyshevI滤波器的时域冲激响应,在5ms-100ms有冲激响应,超过这一范围的冲激响应近似为零,进而实现了ChebyshevI带通滤波器的设计。 4、仿真结果 信号S=S1+S2;S3为S滤波后的信号 1)S1的频率为50Hz, , ;S2的频率为100Hz, 200 , 。 仿真,得图12结果。 图12 的仿真结果 由上图可以看出信号S经过滤波后,信号的频率大致为100Hz,即滤波后的信号与S2大致相同。 2)S1的频率为300Hz, , ;S2的频率为150Hz, 300 , 。 仿真,得图13结果。 图13 的仿真结果 由上图可以看出信号S经过滤波后,信号的频率大致为150Hz,即滤波后的信号与S2大致相同。 六、总结与体会 总体而言,IIR数字滤波器传统设计方法虽然有众多优点,但其计算非常繁琐。 利用MATLAB设计滤波器,使原来非常繁琐复杂的程序设计变成了简单的函数调用,为滤波器的设计和实现开辟了广阔的天地,尤其是Matlab工具箱使各个领域的研究人员可以直观方便地进行科学研究与工程应用。 其中的信号处理工具箱、图像处理工具箱、小波工具箱等更是为数字滤波研究的蓬勃发展提供了可能。 MATLAB信号处理工具箱为滤波器设计及分析提供了非常优秀的辅助设计工具,在设计数字滤波器时,善于应用MATLAB进行辅助设计,能够大大提高设计效率。 利用MATLAB设计数字滤波器在数字通信系统和计算机领域信号处理中,有着广泛的应用前景。 此次专业方向设计,我用了一周的时间来恶补数字信号处理知识,用了一周的时间来学习Matlab应用软件,用了一周的时间来完成IIR滤波器的设计以及完成报告书写。 在得到很多新知识的同时,完满的完成了此次专业方向设计。 在经过一周的数字信号处理知识学习后,我理解了数字信号处理的概念,数字信号处理是把信号用数字或符号表示的序列,通过计算机或通用(专用)信号处理设备,用数字的数值计算方法处理,以达到提取有用信息便于应用的目的;还了解到数字信号处理系统的基本组成(图14);同时也明白了数字滤波器的基本结构、原理以及设计方法(着重了解了IIR数字滤波器)等。 图14数字信号处理系统的简单方框图 在经过一周的Matlab应用软件学习后,我从对Matlab应用软件一无所知的状态达到了能够简单使用Matlab的状态。 在这些基础之上,我才圆满的完成了专业方向设计。 虽然指导老师说此专业方向设计的内容并不难,但此次专业方向设计的内容并不是自己之前接触过的(无论是数字信号处理的理论知识,还是Matlab应用软件,我都一无所知),所以自己在完成设计中,遇到了不少的麻烦和困难。 不过,经过自己合理的安排、查阅大量资料,加上指导老师耐心的指导和自己不懈的努力,最终还是圆满的完成了此次设计。 这些,不仅让我再次深刻的领悟到“世上无难事,只怕有心人”这个道理,同时也锻炼了我的耐心以及让我在面对事情时更加的细心。 七、参考文献 [1]程佩青.数字信号处理教程(第二版).清华大学出版社,2007.2 [2]张威.MATLAB基础与编程入门(第二版).西安电子科技大学出版社,2008.1 [3]张葛祥、李娜.MATLAB仿真技术与应用.清华大学出版社,2003 [4]邓伟、田正文.利用MATLAB辅助设计IIR数字带通滤波器[j].计算机与数字工程,2009
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Matlab IIR 滤波器 设计 仿真