ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:126.44KB ,
资源ID:7193137      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7193137.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于MTLAB的FIR滤波器设计.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于MTLAB的FIR滤波器设计.docx

1、基于MTLAB的FIR滤波器设计MATLAB仿真及其应用专业论文 题 目: 基于MTLAB的FIR滤波器设计 专 业: 班 级: 姓 名: 学 号: 指导教师: 目录1绪论 21.1课题研究的背景 21.2课题研究现状 21.3本课题研究的实施方案 32 FIR滤波器 42.1 FIR滤波器的概念 42.2 FIR滤波器的原理和结构 42.3 FIR滤波器的特点 52.4 FIR滤波器的设计 53仿真软件MATLAB简介 63.1 MATLAB的概况 63.2 MATLAB的产生历史背景 73.3 MATLAB的语言特色 84 FIR滤波器的MATLAB实现 104.1 程序设计法 104.2

2、 FDATool设计法 114.2.1 带通滤波器设计 114.2.2 Simulink仿真 125 总结 12参考文献: 131绪论1.1课题研究的背景数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应(IIR)滤波器和有限冲激响应(FIR)滤波器。与IIR滤波器相比,FIR的实现是非递归的,总是稳定的;更重要的是,FIR滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。1.2课题研究现状早在2

3、0世纪40年代末期,就有人讨论过数字滤波器的可能性问题,在50年代也有人在研究讨论过数字滤波的问题。但直到60年代中期,才开始形成关于数字滤波器的一整套完整的正规理论。在这一时期,提出了各种各样的数字滤波器结构,有的以运算误差最小为特点,有的则以运算速度高见长,而有的则二者兼而有之;出现了数字滤波器的各种逼近方法和实现方法,对递归和非递归两类滤波器作了全面的比较,统一了数字滤波器的基本概念和理论。数字滤波器领域的一个重要发展是对有限冲激响应(FIR)和无限冲激响应(IIR)关系的认识的转化。在初期,一般认为IIR滤波器比FIR滤波器具有更高的运算效率,因而明显地倾向于前者,但当人们提出用快速傅

4、立叶变换(FFT)实现卷积运算的概念之后,发现高阶FIR滤波器也可以用很高的运算效率来实现,这就促使人们对高性能FIR滤波器的设计方法和数字滤波器的频域设计方法进行了大量的研究,从而出现了此后数字滤波器设计中频域方法和时域方法并驾齐驱的局面。70年代科学技术蓬勃发展,数字信号处理开始与大规模和超大规模集成电路技术,微处理器技术、高速数字算术单元、双极型高密度半导体存储器、电荷转移器件等新技术、新工艺结合了起来,并且引进了计算机辅助设计方法,它使数字滤波器的设计仅仅是对相应模拟滤波器的逼近。现在,数字信号处理技术,包括数字滤波在内,正以惊人的速度向纵深和高级的方向发展,估计这种趋势还要连续一个较

5、长的时期,未来的发展可能会比过去的进程更为激动人心,必将引起某些领域的飞跃性转折。1.3本课题研究的实施方案MATLAB是一个功能强大的软件,是由MATH WORKS公司于1984年推出的一种面向科学于工程的计算软件。Matlab语言是一种简单、高效的高级语言,是一种内容丰富、功能强大的分析工具,包含了600多个用于数学计算、统计和工程处理的函数。它的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析一级计算生物学等总舵应用领域。在信号处理的工具箱中,Matlab包含了滤波器分析、滤波器设计、IIR数字滤波器设计、FIR滤波器设计、IIR数字滤波器阶次设计等函数

6、命令。Simulink是用来动态系统和嵌入式系统的多领域仿真于基于模型的设计工具,对各种师太系统,提供了交互式图形化环境和可定制模块库来对其进行设计、仿真、执行和测试。利用Matlab/Simulink设计一个FIR滤波器。2 FIR滤波器2.1 FIR滤波器的概念FIR(Finite Impulse Response)滤波器:有限长单位冲激响应滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。因此,FIR滤波器在通信、图像处理、模式识别等领域都有着广泛的应用。2.2 FIR滤波器的原理和结构一

7、个截止频率为c(rad/s)的理想数字低通滤波器,其传递函数表达式是: (1-1)相应的单位取样响应hd(n)为: Hd(n)= (1-2)由式2-1和2-2可以看出,这个滤波器在物理上是不可实现的,因为冲激响应具有无限性和因果性。为了产生有限长度的冲激响应函数,我们取样响应为h(n),长度为N,其系数函数为H(z): (1-3)用h(n)表示截取hd(n)后冲激响应, 即:式子中W(n)为窗函数,长度为N。当=(N-1)/2时,截取的一段h(n)对(N-1)/2对称,可保证所设计的滤波器具有线性相位。一般来说,FIR数字滤波器输出y(n)的Z变换形式Y(z)与输入x(n)的Z变换形式之间的关

8、系如下: (1-4)实现结构如图1所示。图1 FIR滤波器结构图从上面的Z变换和结构图可以很容易得出FIR滤波器的差分方程表示形式。对式1-4进行反Z变换,可得: (1-5)式1-5为FIR数字滤波器的时域表示方法,其中x(n)是在时间n的滤波器的输入抽样值。根据式1-5即可对滤波器进行设计。2.3 FIR滤波器的特点有限长单位冲激响应(FIR)滤波器有以下特点: (1) 系统的单位冲激响应h (n)在有限个n值处不为零 (2) 系统函数H(z)在|z|0处收敛,极点全部在z = 0处(因果系统) (3) 结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反

9、馈的递归部分。 设FIR滤波器的单位冲激响应h (n)为一个N点序列,0 n N 1,则滤波器的系统函数为 H(z)=h(n)*z-n 就是说,它有(N1)阶极点在z = 0处,有(N1)个零点位于有限z平面的任何位置。2.4 FIR滤波器的设计 FIR滤波器的设计方法有许多种,如窗函数设计法、频率采样设计法和最优化设计法等。窗函数设计法的基本原理是用一定宽度窗函数截取无限脉冲响应序列获得有限长的脉冲响应序列,主要设计步骤为: (1) 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。 (2) 由性能指标确定窗函数W(n)和窗口长度N。 (3) 求得实际滤波器的单位脉冲响应h(n), h

10、(n)即为所设计FIR滤波器系数向量b(n)。 (4) 检验滤波器性能。 本文将针对一个含有5Hz、15Hz和30Hz的混和正弦波信号,设计一个FIR带通滤波器,给出利用MATLAB实现的三种方法:程序设计法、 FDATool设计法设计法。参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率fc2=20 Hz,过渡带宽6 Hz,通阻带波动0.01,采用凯塞窗设计。3仿真软件MATLAB简介3.1 MATLAB的概况MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化

11、以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。 MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。 MATLAB的

12、基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C+,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。3.2 MATLAB的产生历史背景在70年代中期,Cleve Moler博士和其同事在美国国家科学基金的资助下开发了调用EISPA

13、CK和LINPACK的FORTRAN子程序库.EISPACK是特征值求解的FOETRAN程序库,LINPACK是解线性方程的程序库.在当时,这两个程序库代表矩阵运算的最高水平.到70年代后期,身为美国New Mexico大学计算机系系主任的Cleve Moler,在给学生讲授线性代数课程时,想教学生使用EISPACK和LINPACK程序库,但他发现学生用FORTRAN编写接口程序很费时间,于是他开始自己动手,利用业余时间为学生编写EISPACK和LINPACK的接口程序.Cleve Moler给这个接口程序取名为MATLAB,该名为矩阵(matrix)和实验室(labotatory)两个英文单

14、词的前三个字母的组合.在以后的数年里,MATLAB在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传.1983年春天,Cleve Moler到Standford大学讲学,MATLAB深深地吸引了工程师John Little.John Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和Cleve Moler,Steve Bangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.1984年,Cleve Moler和John Little成立了Math Works公司,正式把MATLAB推向市场,并继续进行MATL

15、AB的研究和开发.在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经

16、占据了数值软件市场的主导地位.在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。MATLAB的出现,为各国科学家开发学科软件提供了新的基础。在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。MathWorks公司1993年推出了MATLAB 4。0版,1995年推出4。2C版(for win3。X)1997年推出5。0版。1999年推出5。3版。MATLAB 5。X较MATLAB 4。X无论是界面

17、还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,在Netscape 3。0或IE 4。0及以上版本,Acrobat Reader中可以方便地浏览。时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。在国内,特别是工

18、程界,MATLAB一定会盛行起来。可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。3.3 MATLAB的语言特色一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。MATLAB最突出的特点就是简洁。MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。MATLAB给用户带来的是最直观,最简洁的程序开发环境。以下简单介

19、绍一下MATLAB的主要特点。1)语言简洁紧凑,使用方便灵活,库函数极其丰富。MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。可以说,用MATLAB进行科技开发是站在专家的肩膀上。具有FORTRAN和C等高级语言知识的读者可能已经注意到,如果用FORTRAN或C语言去编写程序,尤其当涉及矩阵运算和画图时,编程会很麻烦。例如,如果用户想求解一个线性代数方程,就得编写一个程序块读入数据,然后再使用一种求解线性方程的算法(例如追赶法)编写一个程序块来求解方程,最后再输出计算结果。在求解过程

20、中,最麻烦的要算第二部分。解线性方程的麻烦在于要对矩阵的元素作循环,选择稳定的算法以及代码的调试动不容易。即使有部分源代码,用户也会感到麻烦,且不能保证运算的稳定性。解线性方程的程序用FORTRAN和C这样的高级语言编写,至少需要四百多行,调试这种几百行的计算程序可以说很困难。以下用MATLAB编写以上两个小程序的具体过程。MATLAB求解下列方程,并求解矩阵A的特征值。Ax=b,其中:A= 32134567 23798512 43235465 98347135 b= 1 2 3 4解为:x=Ab;设A的特征值组成的向量e,e=eig(A)。可见,MATLAB的程序极其简短。更为难能可贵的是,

21、MATLAB甚至具有一定的智能水平,比如上面的解方程,MATLAB会根据矩阵的特性选择方程的求解方法,所以用户根本不用怀疑MATLAB的准确性。2)运算符丰富。由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。3)MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB

22、的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑图形界面的能力。7)MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。8)功能强大的工具箱是MATLAB的另一特色。MATLAB包含两个部分:核心部分和各种可选的工具箱。核心部分中有数百个核心内部函数。其工具箱又分为两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能,图示建模仿真功能,文字处理功能以及与硬件实时交互功能。功能性工具箱用于多种学

23、科。而学科性工具箱是专业性比较强的,如control,toolbox,signl proceessing toolbox,commumnication toolbox等。这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高,精,尖的研究。9)源程序的开放性。开放性也许是MATLAB最受人们欢迎的特点。除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱4 FIR滤波器的MATLAB实现4.1 程序设计法MATLAB信号处理工具箱提供了各种窗函数、滤波器设计函数和滤

24、波器实现函数。本文的带通滤波器设计及滤波程序如下:fc1=10;fc2=20;fs=100; n,Wn,beta,ftype=kaiserord(7 13 17 23,0 1 0,0.01 0.01 0.01,100);%得出滤波器的阶数n=38,beta=3.4w1=2*fc1/fs;w2=2*fc2/fs;%将模拟滤波器的技术指标转换为数字滤波器的技术指标window=kaiser(n+1,beta);%使用kaiser窗函数b=fir1(n,w1,w2,window);%使用标准频率响应的加窗设计函数fir1freqz(b,1,512);%数字滤波器频率响应figure(1)t=(0:1

25、00)/fs;s=sin(2*pi*t*5)+sin(2*pi*t*15)+sin(2*pi*t*30);%混和正弦波信号plot(t,s)%显示滤波前波形title(滤波前波形)figure(2)sf= filter(b,1,s);%对信号s进行滤波 plot(t,sf)%显示滤波后波形title(滤波后波形)程序执行的结果如图2和图3所示:图2滤波器幅频特性和相频特性 图3滤波前后的波形4.2 FDATool设计法FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱专用的滤波器设计分析工具,操作简单、灵活,可以采用多种方法设计FIR和II

26、R滤波器。在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。4.2.1 带通滤波器设计已知滤波器的阶数n=38,beta=3.4。本例中,首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window选项中选取Kaiser,Beta值为3.4;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率Fc1=10Hz,Fc2=20Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可

27、以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。设计完成后将结果保存为kaiser.fda文件。4.2.2 Simulink仿真在Simulink环境下,将滤波器文件kaiser.fda导入Digital Filter Design模块,输入信号为s(t)=sin(10t)+sin(30t)+sin(60t),生成的仿真图和滤波效果如图4所示。(1)Simulink仿真图 (2)滤波前后的离散波形图4Simulink仿真图和滤波效果图5 总结与其他高级语言的程序设计相比,在MATLAB环境下利用程序法调用窗函数,可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省时间

28、,提高编程效率,且参数的修改方便,还可以进一步进行优化设计。随着信息技术的不断发展,利用MATLAB进行数字滤波器设计将发挥更大的作用。同时,用MATLAB设计有关数字滤波器的参数,将会为硬件实现(比如说在DSP器件上的实现)提供一条简单而准确的途径和依据。参考文献:1 董长虹等. MATLAB信号处理与应用.北京:国防工业出版社,20052 美 M.H.海因斯 著,张建华等 译.数字信号处理.北京:科学出版社,20023 张葛祥,李 娜. MATLAB仿真技术与应用.北京:清华大学出版社,20034 楼顺天,李博菡.基于MATLAB的系统分析与设计.西安:西安电子科技大学出版社,19985 丁玉美,高西全数字信号处理M西安:西安电子科技大学出版社,20056黄文梅信号分析与处理M长沙:国防科技大学出版社,20007 楼顺天,李伯菡基于MATLAB的系统分析与设计M西安:西安电子科技大学出版社,19998 罗军辉,罗勇江MATLAB在数字信号处理中的应用M北京:机械工业出版社,2005

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1