基于Matlab的IIR滤波器的设计与仿真_第1页
基于Matlab的IIR滤波器的设计与仿真_第2页
基于Matlab的IIR滤波器的设计与仿真_第3页
基于Matlab的IIR滤波器的设计与仿真_第4页
基于Matlab的IIR滤波器的设计与仿真_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上西南科技大学专业方向设计报告课程名称: 通信工程专业方向设计 设计名称: 基于Matlab的IIR滤波器的设计与仿真 姓 名: 周书华 学 号: 班 级: 通信工程0903班 指导教师: 张红英 起止日期: 2012/11/222012/12/14 西南科技大学信息工程学院制专心-专注-专业方 向 设 计 任 务 书学生班级: 通信工程0903班 学生姓名: 周书华 学号: 设计名称: 基于Matlab的IIR滤波器的设计与仿真 起止日期: 2012/11/222012/12/14 指导教师: 张红英 设计要求:1) 了解无限冲激响应IIR滤波器的传统设计与方法;2)

2、 了解Matlab信号处理箱。掌握FDATool专用滤波器设计分析工具;3) 利用Matlab设计一个10阶的带通Chebyshev I型滤波器,其通带范围是100到200Hz,采样频率为1000Hz,幅值衰减Rp=0.5,画出其幅频、相频和冲激响应;(自编Matlab程序和利用FDATool工具箱实现)方 向 设 计 学 生 日 志时间设计内容2012/11/22-2012/11/29学习数字信号处理教程,特别是关于IIR数字滤波器的部分2012/11/30-2012/12/08学习MATLAB应用软件,特别是其信号处理箱和Simuink2012/12/09-2012/12/10分析IIR数

3、字滤波器的传统设计方法2012/12/11分别在MATLAB中编程设计和利用FDATool来设计IIR滤波器2012/12/12对设计的IIR进行仿真并分析2012/12/13完成专业设计报告的撰写2012/12/14答辩基于Matlab的IIR滤波器的设计与仿真一、 摘要传统的数字滤波器设计计算繁琐,尤其是设计高阶滤波器时工作量大,利用Matlab可以快速有效地实现数字滤波器的设计与仿真。本文介绍了IIR数字滤波器的传统设计思想和步骤,同时也介绍了利用MATLAB对IIR数字滤波器进行设计的方法、设计的操作步骤以及对设计的滤波器的仿真。二、 设计目的和意义1、 通过此次专业方向设计,了解无限

4、冲激响应IIR滤波器的传统设计方法;2、 了解Matlab信号处理箱并掌握FDATool专用滤波器设计分析工具;3、 学习如何使用Matlab,学会用Matlab解决实际问题。三、 设计原理数字滤波器,是具有一定传输选择特性的数字信号处理装置,其输入和输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。可以把它理解为是一个计算程序或算法,它把代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按照预定的形式变化。数字滤波器有多种分类,从数字滤波器功能上分可分为低通、高通、带阻、带通滤波器,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,

5、即无限长冲激响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。1、 无限冲激响应IIR滤波器及其传统设计方法IIR滤波器的有理系统函数为: Hz=Y(z)X(z) (1)表示这一系统输入输出关系的N阶差分方程为: yn=k=1Naky(n-k)+k=0Mbkx(n-k) (2)对照模拟滤波器的传递函数: Hs=bmsm+bm-1sm-1+b0ansn+an-1sn-1+a0 (3)不难看出,IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。模拟滤波器的设计在理论上已十分成熟,所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的思路。根据以上思路,首先设计一个模拟原型滤

6、波器(截止频率为1rad/s的低通滤波器),然后在模拟域(S平面)进行频率变换,将模拟原形滤波器转换成所需类型(指定截止频率的低通、高通、带通、带阻)的模拟滤波器,再将其数字离散化,从S平面映射至Z平面,得到所需技术指标的数字滤波器。(也可先将模拟原型离散化,得到数字原型滤波器,继而在数字域(Z平面)进行频率变换,得到所需类型的数字滤波器。)模拟滤波器到数字滤波器的转换可在时域进行也可在频域实现,时域转换的关键是要使数字滤波器与模拟滤波器时域响应的采样值相等,以保持其瞬态特性不变,常用的是冲激响应不变法。 频域变换法必须使得数字滤波器在-nn范围内的幅频特性与模拟滤波器在-n/Tn/T 范围内

7、的幅频特性一致,即保证s平面与z平面上幅频特性的一一单值对应关系,常用的是脉冲响应不变法和双线性变换法。IIR滤波器的传统设计方法思路清晰,步骤详尽,可参阅公式、手册循章而行。但其计算非常繁琐,设计过程中要改变参数和滤波器类型时都要重新计算。它需要反复的实验,需要设计者凭借经验设定参数,很多时候要根据设计要求和滤波效果不断调整,以达到设计的最优化。在这种情况下,单纯的靠公式计算和编制简单的程序很难在短时间内完成。2、 IIR滤波器的Matlab设计图1 Matlab 2012a 主界面Matlab是 MATHWORK公司推出的一套面向科学和数值计算的可视化语言,它集数值分析、矩阵运算、信号处理

8、和图形显示于一体,是一个高度集成系统具有友好的用户界面和良好的帮助功能。 Matlab自带的信号处理工具箱(Signal Processing Toolbox)具有强大的信号处理和分析功能,利用Matlab软件优越的数字分析及仿真功能,对理解数字滤波器及数字滤波具有一定参考价值。Matlab的信号处理工具箱中,提供了一整套模拟、数字滤波器的设计命令和运算函数,方便准确,简单易行,使得设计人员除了可按上述传统设计步骤快速地进行较复杂高阶选频滤波器的计算、分析外,还可通过原型变换法直接进行各种典型数字滤波器设计,即应用Matlab设计工具从模拟原型直接变换成满足原定频域指标要求的数字滤波器。Mat

9、lab有两种途径来设计IIR数字滤波器,分别为FDATool界面设计和直接程序设计。1) FDATool界面设计FDATool是Matlab信号处理工具箱里专用的滤波器设计分析工具,其界面为滤波器的设计提供了一个交互式的设计环境,用户进行参数设置后,可以设计几乎所有的基本常规滤波器,包括IIR和FIR 的各种设计方法,操作简单,方便灵活。FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数;另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。图2 FDATool界面Design Filter部分主要分为:A、 Respons

10、e Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。B、 Design Method(设计方法)选项,包括IIR滤波器的Butterwotth(巴特沃思)法、Chebyshev  Type I(切比雪夫I型)法、Chebyshev Type II(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法;C、 Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Sp

11、ecify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1)。如果选择Minimum Order,则MATLAB根据所选择的滤波器类型自动使用最小阶数;D、 Frequency Specifications选项,可以详细定义频带的各参数,包括采样频率和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定。例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截

12、止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定,所以只需定义通带截止频率,而不必定义阻带参数。E、 Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6,所以不必定义。2) 直接程序设计在Matlab中,对各种滤波器的设计都有相应的函数,

13、可以用来做滤波器程序设计。比如,估计IIR数字滤波器的阶数N,相应的M文件为:buttord用于巴特沃斯滤波器,cheb1ord用于切比雪夫1型滤波器,cheb2ord用于切比雪夫2型滤波器,ellipord用于椭圆滤波器。对于基于双线性变换法的IIR滤波器设计,对应于四种逼近技术,相应的M文件为:butter用于巴特沃斯滤波器的设计,cheby1用于切比雪夫1型滤波器的设计,cheby2用于切比雪夫2型滤波器的设计,ellip用于椭圆滤波器的设计。同时,利用zp2tf可以由滤波器的零极点向量和标量增益因子得到传输函数分子和分母的系数向量。利用函数zp2sos可以得到传输函数分子和分母系数向量

14、的二次项因子。计算出传输函数的系数之后,可以利用M文件freqz来计算频率响应,可以利用impz来计算冲激响应。由于本设计,已经明确了要设计一个10阶的带通Chebyshev I型滤波器,注重介绍一下cheby1函数。利用b,a=cheby1(n,Rp,Wn,ftype)可以设计出阶数为n、截止频率为Wn、带通波纹最大衰减为Rp的数字低通滤波器。其中参数ftype 的形式决定了滤波器的形式,当它为high 时得到滤波器为n阶的、截止频率为Wn的高通滤波器。若Wn是一个含有两个元素向量w1 w2,则cheby1函数返回值是阶数为2n的带通滤波器的系统函数有理多项式的系数,通带范围是w1<W

15、<w2。3、 Simulink仿真Simulink是Matlab最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程清晰及仿真精细、贴近实际、效率高、灵活等优点,并基于以上优点Simulink已被广泛应用于控制理论和数字信号处理的复杂仿真和设计。同时有大量的第三方软件和硬件可应用于或被要求应用于Simulink。图3 Simulink Library Browser界面Simulink Library Browser(模型库浏览器),里面有大量的功能

16、模块,比如示波器、加法器、离散正弦信号源等。而这些功能模块,都可以编辑其参数。仿真界面,新建立一个model ,就可以进入仿真界面。可以把Simulink Library Browser里面的功能模块拖动到model中,也可以在FDATool滤波器设计界面把设计好的滤波器导入到model中,然后对仿真框图进行编辑,仿真。IIR滤波器仿真步骤:打开Simulink Library Browser;新建一个model;在Simulink Library Browser中找到DSP离散正弦信号源、加法器以及示波器并拖到model中;再在FDATool界面把设计好的IIR滤波器导入到model中;在m

17、odel中编辑仿真框图;在DSP离散信号模块中设定相关参数;最后进行仿真。通过设定相关参数,观察仿真中的示波器的波形等,就可以分析出设计的IIR滤波器是否达到要求。图4 Simulink 的model仿真界面四、 详细设计步骤本专业方向设计,要求分别自编Matlab程序和利用FDATool工具箱设计一个10阶的带通Chebyshev I型滤波器,其通带范围是100到200Hz,采样频率为1000Hz,幅值衰减Rp=0.5。并画出其幅频、相频和冲激响应。1、 自编Matlab程序进行设计1) 在MATLAB环境下运行该程序即可得到设计的IIR滤波器的时域冲激响应。n=5; %阶数为10Rp=0.

18、5; %幅值衰减为0.5Wn=100 200/500; %频率缩放因子Wnb,a=cheby1(n,Rp,Wn); %返回H(z)的分子分母系数y,t=impz(b,a,); %冲激响应stem(t,y,'.'); grid;xlabel('Time(mseconds)'); ylabel('Amplitude'); title('Impulse Response');2) 在MATLAB环境下运行该程序即可得到设计的IIR滤波器的幅频和相频。n=5; %阶数为10Rp=0.5; %幅值衰减为0.5Wn=100 200/500;

19、%频率缩放因子Wnb,a=cheby1(n,Rp,Wn); %返回H(z)的分子分母系数freqz(b,a,512,1000); %频率响应2、 利用FDATool进行设计1) 打开FDATool面板在Matlab主界面:点击左下角“Start”选项点击弹出界面的“Toolboxes”选项点击弹出界面“DSP System”选项点击弹出界面“Filter Design&Analysis Tool(fdatool)”选项。通过以上步骤,便打开了FDATool界面。图5 如何打开FDATool界面2) 在FDATool界面中设计并保存IIR滤波器在Filter Type中选择Bandpas

20、s(带通滤波器);在Design Method选项中选择IIR,在相邻的右则选项中选择Chebyshev I(切比雪夫I型);指定Filter Order项中的Specify Order=10;在Frequency Specifications中选择Unit为Hz,采样频率Fs=1000,通带Fpass1=100和Fpass2=200;在Magnitude Specifications中选择Unit为db,Apass=0.5。点击Design Filter即可得到所设计的IIR滤波器。通过菜单选项Analysis可以在特性区看到所设计的幅频响应、相频响应和冲击响应等特性。完成以上步骤,点击保存

21、滤波器,保存名字为IIR_100_200.fda。3、 仿真本文通过调用Simuink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下的仿真结果。1) 搭建仿真图a、 新建一个model在Matlab主界面新建一个model,并保存为IIRmodel.mdl;b、 打开Simulink Library Browser在model界面的工具栏有Library Browser的图标;c、 在Simulink Library Browser中寻找器件并拖动到model仿真图需要一个scope(Simulink/Sinks/scope 示波器),两个

22、Sine Wave(Simulink /Sources/Sine Wave DSP离散正弦信号源),一个Add(Sinulink/Math Operations/Add 加法器);d、 把设计好的滤波器导入到model中FDATool界面中“File”“Export to Simulink Model”“Realize Model”;e、 修改示波器scope为同时可以测试四个信号双击model中的scope,在弹出界面点击设置按钮并编辑scope的参数“Number of axes”为4;f、 按照图6连接各个功能模块。图6 IIR数字滤波器仿真框图2) 改变参数分别改变SineWave、S

23、ineWave1的参数,以用不同的信号测试所设计的滤波器的滤波效果。假定,信号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、 修改仿真配置参数Configuration Parameter点击菜单中的Simulation 并打开Configuration Parameter,在弹出界面中更改仿真时间Simulation time为0.0到1000.0;b、 器件SineWa

24、ve双击SineWave,在弹出界面中,修改参数sine type为time based,修改frequency为0.2*pi,sample time改为1;c、 器件SineWave双击SineWave1,在弹出界面中,修改参数sine type为time based,修改frequency为0.6*pi,sample time改为1;3) 仿真 改变参数继续仿真 所有环节都布置完成后,点击model中工具start simulation的图标进行仿真。根据仿真,查看scope示波器中的波形,分析仿真结果,并再次改变输入信号,改变SineWave、SineWave1的参数,再次进行仿真,分析

25、直到了解了设计的IIR滤波器的滤波效果为止。五、 设计结果及分析1、 自编Matlab程序设计结果运行程序,得到设计的IIR滤波器的相频、幅频以及冲击响应如下:图7 IIR数字滤波器(自编程设计)的冲激响应图8 IIR数字滤波器(自编程设计)的幅频(上)、相频(下)2、 FDATool界面设计结果在FDATool界面,按照要求对IIR滤波器设计完成后,点击菜单选项Analysis下Impulse Response选项,得到IIR滤波器的冲激响应(图9),点击菜单选项Analysis下Magnitude Response选项,可以得到幅频(图10),点击菜单选项Analysis下Phase Re

26、sponse选项,可以得到相频(图11)。图9 IIR数字滤波器(FDATool设计)的冲激响应图10 IIR数字滤波器(FDATool设计)的幅频图11 IIR数字滤波器(FDATool设计)的相频3、 分析设计的IIR滤波器根据结果可知,自编程与FDATool界面的IIR滤波器设计,得到的结果是一样的。由图8(上)和图10可知,这种滤波器在100-200Hz的通带范围内是等波纹的,而在阻带中是单调的,这是Chebyshev I滤波器的幅频特性。由图8(下)和图11可知,在100-200Hz的范围内相移较小,其曲线近似一条直线,失真较小;当频率超过这一范围时,相移较大,而且其曲线是非直线的,

27、所以失真也较大。由图7和图9得到了Chebyshev I滤波器的时域冲激响应,在5ms-100ms有冲激响应,超过这一范围的冲激响应近似为零,进而实现了Chebyshev I带通滤波器的设计。4、 仿真结果信号S = S1 + S2;S3为S滤波后的信号1) S1的频率为50Hz,S1=2*50=100,S1=S1fs=0.1 ;S2的频率为100Hz,S2=2*100=200,S2=S2fs=0.2。仿真,得图12结果。图12 S1=0.1,S2=0.2的仿真结果由上图可以看出信号S经过滤波后,信号的频率大致为100Hz,即滤波后的信号与S2大致相同。2) S1的频率为300Hz,S1=2*300=600,S1=S1fs=0.6 ;S2的频率为150Hz,S2=2*150=300,S2=S2fs=0.3。仿真,得图13结果。图13 S1=0.6,S2=0.3的仿真结果由上图可以看出信号S经过滤波后,信号的频率大致为150Hz,即滤波后的信号与S2大致相同。六、 总结与体会总体而言,IIR数字滤波器传统设计方法虽然有众多优点,但其计算非常繁琐。利用MATLAB设计滤波器,使原来非常繁琐复杂的程序设计变成了简单的函数调用,为滤波器的设计和实现开辟了广阔的天地,尤其是Matlab工具箱使各个领域的研究人员可以直观方便

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论