完整版基于matlab数字滤波器的毕业设计论文.docx
- 文档编号:24657685
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:20
- 大小:152.93KB
完整版基于matlab数字滤波器的毕业设计论文.docx
《完整版基于matlab数字滤波器的毕业设计论文.docx》由会员分享,可在线阅读,更多相关《完整版基于matlab数字滤波器的毕业设计论文.docx(20页珍藏版)》请在冰豆网上搜索。
完整版基于matlab数字滤波器的毕业设计论文
摘要:
利用MATLAB设计滤波器,可以按照设计要求非常方便地调整设计参数,极大地减轻了设计的工作量,有利于滤波器设计的最优化。
Matlab因其强大的数据处理功能被广泛应用于工程计算,其丰富的工具箱为工程计算提供了便利,利用Matlab信号处理工具箱可以快速有效地设计各种数字滤波器,设计简单方便。
本文介绍了在MATLABR2009a环境下滤波器设计的方法和步骤。
关键词:
滤波器,matlab,fdatool
Abstract:
ByusingMATLAB,wecandesignfiltersandmodifythefilters’parametersconvenientlyaccordingtoourdemands.Thisrelievesgreatlydesignworkloadsandmakesforoptimizationoffilterdesigning.Matlabcanbewidelyusedinengineeringcalculationsbecauseofitspowerfulfunctionsofdataprocessing.Itsrichtoolboxmakesthecalculationseasy.WithMatlabsignalprocessingtoolbox,variousdigitalfilterscanbedesignedeffectivelyinsimpleway.ThisarticleintroducethemethodsandprocessesinthecircumstanceofMATLABR2009a.
Keywords:
filter,matlab,fdatool
目录
1引言:
4
2滤波器简介4
2.1滤波器的概念4
2.2滤波器的发展过程5
2.3滤波器的原理5
2.4滤波器的分类6
3MATLAB简介9
3.1MATLAB的概况9
3.2MATLAB产生的历史背景9
3.3MATLAB的语言特点11
3.4MTALAB的功能12
4方案设计14
4.1巴特沃斯IIR滤波器的设计14
4.2契比雪夫I型IIR滤波器的设计15
4.3数字滤波器的设计15
4.4数字滤波器simulink仿真及实现25
结论30
参考文献31
致谢32
1引言:
与模拟滤波器相对应,在离散系统中广泛应用数字滤波器。
它的作用是利用离散时间系统的特性对输入信号波形或频率进行加工处理。
或者说,把输入信号变成一定的输出信号,从而达到改变信号频谱的目的。
数字滤波器一般可以用两种方法来实现:
一种方法是用数字硬件装配成一台专门的设备,这种设备称为数字信号处理机;另一种方法就是直接利用通用计算机,将所需要的运算编成程序让通用计算机来完成,即利用计算机软件来实现。
模拟滤波器在测试系统或专用仪器仪表中是一种常用的变换装置。
例如:
带通滤波器用作频谱分析仪中的选频装置;低通滤波器用作数字信号分析系统中的抗频混滤波;高通滤波器被用于声发射检测仪中剔除低频干扰噪声;带阻滤波器用作电涡流测振仪中的陷波器,等等。
MATLAB是由美国Mathworks公司推出的用于数值计算和图形处理的科学计算系统环境。
MATLAB是英文MATrixLABoratory(矩形实验室)的缩写。
在MATLAB环境下,用户可以集成地进行程序设计,数值计算,图形绘制,输入输出,文件管理等各项操作。
除此之外,MATLAB还具有很强的功能扩展能力,与它的主系统一起,可以配备各种各样的工具箱,以完成一些特定的任务。
目前,Mathworks公司推出了18种工具箱。
用户可以根据自己的工作任务,开发自己的工具箱。
2滤波器简介
2.1滤波器的概念
滤波器是一种用来消除干扰杂讯的器件,将输入或输出经过过滤而得到纯净的交流电。
您可以通过基本的滤波器积木块----二阶通用滤波器传递函数,推导出最通用的滤波器类型:
低通、带通、高通、帯阻和椭圆型滤波器。
传递函数的参数——f0、d、Little敏锐地觉察到MATLAB在工程领域的广阔前景.同年,他和CleveMoler,SteveBangert一起,用C语言开发了第二代专业版.这一代的MATLAB语言同时具备了数值计算和数据图示化的功能.
1984年,CleveMoler和JohnLittle成立了MathWorks公司,正式把MATLAB推向市场,并继续进行MATLAB的研究和开发.
在当今30多个数学类科技应用软件中,就软件数学处理的原始内核而言,可分为两大类.一类是数值计算型软件,如MATLAB,Xmath,Gauss等,这类软件长于数值计算,对处理大批数据效率高;另一类是数学分析型软件,Mathematica,Maple等,这类软件以符号计算见长,能给出解析解和任意精确解,其缺点是处理大量数据时效率较低.MathWorks公司顺应多功能需求之潮流,在其卓越数值计算和图示能力的基础上,又率先在专业水平上开拓了其符号计算,文字处理,可视化建模和实时控制能力,开发了适合多学科,多部门要求的新一代科技应用软件MATLAB.经过多年的国际竞争,MATLAB以经占据了数值软件市场的主导地位.
在MATLAB进入市场前,国际上的许多软件包都是直接以FORTRANC语言等编程语言开发的。
这种软件的缺点是使用面窄,接口简陋,程序结构不开放以及没有标准的基库,很难适应各学科的最新发展,因而很难推广。
MATLAB的出现,为各国科学家开发学科软件提供了新的基础。
在MATLAB问世不久的80年代中期,原先控制领域里的一些软件包纷纷被淘汰或在MATLAB上重建。
时至今日,经过MathWorks公司的不断完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大大大型软件。
在国外,MATLAB已经经受了多年考验。
在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。
在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。
在国内,特别是工程界,MATLAB一定会盛行起来。
可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。
3.3MATLAB的语言特点
一种语言之所以能如此迅速地普及,显示出如此旺盛的生命力,是由于它有着不同于其他语言的特点,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。
MATLAB最突出的特点就是简洁。
MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码。
MATLAB给用户带来的是最直观,最简洁的程序开发环境。
以下简单介绍一下MATLAB的主要特点:
a.语言简洁紧凑,使用方便灵活,库函数极其丰富。
MATLAB程序书写形式自由,利用起丰富的库函数避开繁杂的子程序编程任务,压缩了一切不必要的编程工作。
由于库函数都由本领域的专家编写,用户不必担心函数的可靠性。
可以说,用MATLAB进行科技开发是站在专家的肩膀上。
b.运算符丰富。
由于MATLAB是用C语言编写的,MATLAB提供了和C语言几乎一样多的运算符,灵活使用MATLAB的运算符将使程序变得极为简短。
c.MATLAB既具有结构化的控制语句(如for循环,while循环,break语句和if语句),又有面向对象编程的特性。
d.程序限制不严格,程序设计自由度大。
例如,在MATLAB里,用户无需对矩阵预定义就可使用。
e.程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。
f.MATLAB的图形功能强大。
在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。
MATLAB还具有较强的编辑图形界面的能力。
g.MATLAB的缺点是,它和其他高级程序相比,程序的执行速度较慢。
由于MATLAB的程序不用编译等预处理,也不生成可执行文件,程序为解释执行,所以速度较慢。
toolbox等。
这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。
j.源程序的开放性。
开放性也许是MATLAB最受人们欢迎的特点。
除内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可通过对源文件的修改以及加入自己的文件构成新的工具箱。
3.4MTALAB的功能
MATLAB包含的内容非常丰富,功能强大,可以概括为以下几个方面:
a.可以在多种操作系统下运行,如DOS、WindowsNT、CompaqAlpha、LinuxSunSolaris等。
b.有超过500种的数学、统计、科学及工程方面的函数,使用简单快捷,并且有很强的用户自定义函数的能力。
c.有强大的图形绘制和可视化功能,可以进行视觉数据处理和分析,进行图形、图像的显示及编辑,能够绘制二维、三维图形,使用户可以制作高质量的图形,从而写出图文并茂的文章。
d.有和用其他高级语言(如C,C++,FORTRAN,JAVA)编写的外部程序相接口的能力,也可把MATLAB程序转换成上述高级语言的子程序。
e.有从外部文件及外部硬件设备读入数据的能力。
f.有丰富的网络资源,从相关的Web网站可以直接获得全套的MATLAB联机帮助文件和说明书的电子文档,还可以获得各类技术支持与帮助。
g.有丰富的工具箱〔toolbox〕。
各个领域的专家学者将众多学科领域中常用的算法编写为一个个子程序,即m文件,这些m文件包含在一个个工具箱中。
其工具箱可以分为两大类,即功能性工具箱和科学性工具箱。
功能性工具箱主要用来扩充MATLAB的符号计算、图形可视化、建模仿真、文字处理等功能以及与硬件实时交互的功能。
学科性工具箱是按学科领域来分类的,如信号处理、控制、通信、神经网络图像处理、系统辨识、鲁棒控制、模糊逻辑、小波等工具箱。
MATLAB中的信号处理工具箱内容丰富,使用简便。
在数字信号处理中常用的算法,如FFT,卷积,相关,滤波器设计,参数模型等,几乎都只用一条语句即可调用。
数字信号处理常用的函数有波形的产生、滤波器的分析和设计、傅里叶变换、Z变换等,如:
波形产生:
sawtooth(锯齿波或三角波)
Diric(Dirichlet或周期sinc函数)
rand(白噪声信号波形)
square(方波)
sinc(sinc或函数)
chirp(chirp信号波形)
滤波器的分析:
abs(求幅值)
angle(求相角)
conv(求卷积)
freqz(数字滤波器频率响应)
impz(数字滤波器的冲击响应)
zplane(数字系统零极点图)
IIR滤波器设计:
butter(巴特沃思数字滤波器)
cheby1(切比雪夫I型)
cheby2(切比雪夫II型)
maxflat(最平滤波器)
ellip(椭圆滤波器)
yulewalk(递归数字滤波器)
bilinear(双线性变换)
impinvar(冲激响应不变法)
FIR滤波器设计:
triang(三角窗)
blackman(布莱克曼窗)
boxcar(矩形窗)
Wn,ftype)其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。
buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。
buttord函数的用法为:
[n,Wn]=buttord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。
当其值为1时代表采样频率的一半。
Rp和Rs分别是通带和阻带区的波纹系数。
不同类型(高通、低通、带通和带阻)滤波器对应的Wp和Ws值遵循以下规则:
a.高通滤波器:
Wp和Ws为一元矢量且Wp>Ws;
b.低通滤波器:
Wp和Ws为一元矢量且Wp c.带通滤波器: Wp和Ws为二元矢量且Wp d.带阻滤波器: Wp和Ws为二元矢量且Wp>Ws,如Wp=[0.1,0.8],Ws=[0.2,0.7]。 4.2契比雪夫I型IIR滤波器的设计 在期望通带下降斜率大的场合,应使用椭圆滤波器或契比雪夫滤波器。 在MATLAB下可使用cheby1函数设计出契比雪夫I型IIR滤波器。 cheby1函数可设计低通、高通、带通和带阻契比雪夫I型滤IIR波器,其通带内为等波纹,阻带内为单调。 契比雪夫I型的下降斜度比II型大,但其代价是通带内波纹较大。 cheby1函数的用法为: [b,a]=cheby1(n,Rp,Wn,ftype)在使用cheby1函数设计IIR滤波器之前,可使用cheblord函数求出滤波器阶数n和截止频率Wn。 cheblord函数可在给定滤波器性能的情况下,选择契比雪夫I型滤波器的最小阶和截止频率Wn。 cheblord函数的用法为: [n,Wn]=cheblord(Wp,Ws,Rp,Rs)其中Wp和Ws分别是通带和阻带的拐角频率(截止频率),其取值范围为0至1之间。 当其值为1时代表采样频率的一半。 Rp和Rs分别是通带和阻带区的波纹系数。 4.3数字滤波器的设计 4.3.1数字滤波器及传统设计方法 数字滤波器(digitalfilter)是由数字乘法器、加法器和延时单元组成的一种装置。 其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。 数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。 数字滤波器有多种分类,根据数字滤波器冲激响应的时域特征,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。 IIR数字滤波器具有无限宽的冲激响应,与模拟滤波器相匹配。 所以IIR滤波器的设计可以采取在模拟滤波器设计的基础上进一步变换的方法。 FIR数字滤波器的单位脉冲响应是有限长序列。 它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。 在对滤波器实际设计时,整个过程的运算量是很大的。 例如利用窗函数法设计M阶FIR低通滤波器时,首先要根据 (1)式计算出理想低通滤波器的单位冲激响应序列,然后根据 (2)式计算出M个滤波器系数。 当滤波器阶数比较高时,计算量比较大,设计过程中改变参数或滤波器类型时都要重新计算。 (1) (2) 设计完成后对已设计的滤波器的频率响应要进行校核,要得到幅频相频响应特性,运算量也是很大的。 我们平时所要设计的数字滤波器,阶数和类型并不一定是完全给定的,很多时候都是要根据设计要求和滤波效果不断的调整,以达到设计的最优化。 在这种情况下,滤波器的设计就要进行大量复杂的运算,单纯的靠公式计算和编制简单的程序很难在短时间内完成设计。 利用MATLAB强大的计算功能进行计算机辅助设计,可以快速有效的设计数字滤波器,大大的简化了计算量,直观简便。 FIR数字滤波器的窗函数设计法 设理想带阻滤波器频率响应为 (2) 利用Kaiser窗函数,设计长度为55的阻带滤波器,使阻带衰减为60dB。 参数β可由式(3)确定α β=0.1102(α-8.7)(3) 其中α=60。 MATLAB程序如下: n=55-1; w=[0.4,0.6]; beta=0.1102*(60-8.7); kaiw=Kaiser(n+1,beta); b=fir1(n,w,’stop’,kaiw); [&AnalysisTool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox)。 FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。 它操作简单,方便灵活。 在MATLAB命令窗口输入FDATool后回车就会弹出FDATool界面。 FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。 DesignFilter部分主要分为: FilterType(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。 DesignMethod(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、ChebyshevTypeI(切比雪夫I型)法、ChebyshevTypeII(切比雪夫II型)法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。 FilterOrder(滤波器阶数)选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数)和MinimumOrder(最小阶数)。 在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1),如果选择MinimumOrder则MATLAB根据所选择的滤波器类型自动使用最小阶数。 FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。 它的具体选项由FilterType选项和DesignMethod选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。 采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。 MagnitudeSpecifications选项,可以定义幅值衰减的情况。 例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。 当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。 WindowSpecifications选项,当选取采用窗函数设计时,该选项可定义,它包含了各种窗函数。 4.3.2.2带通滤波器设计实例 在小电流接地系统中注入84.6Hz的正弦信号,对其进行跟踪分析,要求设计一带通数字滤波器,滤除工频及整次谐波,以便在非常复杂的信号中分离出该注入信号。 参数要求: 98阶FIR数字滤波器,采样频率1000Hz,采用Hamming窗函数设计。 首先在FilterType中选择Bandpass(带通滤波器);在DesignMethod选项中选择FIRWindow(FIR滤波器窗函数法),接着在WindowSpecifications选项中选取Hamming;指定FilterOrder项中的SpecifyOrder=97;由于采用窗函数法设计,只要给出通带下限截止频率Fc1和通带上限截止频率Fc2,选取Fc1=80Hz,Fc2=100Hz。 设置完以后点击DesignFilter即可得到所设计的FIR滤波器。 通过菜单选项Analysis可以在特性区看到所设计滤波器的幅频响应、相频响应、零极点配置和滤波器系数等各种特性。 设计完成后将结果保存为图4-11.fda文件。 图4-11.fda文件 在设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和滤波器类型,以便得到最佳效果。 其它类型的FIR滤波器和IIR滤波器也都可以使用FDATool来设计。 在 中按(MagnitudeResponse)。 MagnitudeResponse 在 中按(PhaseResponse)。 PhaseResponse 图4-2滤波器幅频和相频响应(特性区) 与其他高级语言的程序设计相比,MATLAB环境下可以更方便、快捷地设计出具有严格线性相位的FIR滤波器,节省大量的编程时间,提高编程效率,且参数的修改也十分方便.还可以进一步进行优化设计,相信随着版本的不断更新,MATLAB在数字滤波器技术中必将发挥更大的作用. 4.3.2.3高通滤波器的设计实例 用窗函数设计高通滤波器,性能指标如下: 通带截止频率ωs=0.2π,阻带截止频率ωp=0.3π,实际通带波动Rp=0.25dB,最小阻带衰减As=70dB。 分析: 凯泽窗能提供74dB的最小阻带衰减,所以选用凯泽窗进行设计,程序主要部分如下: As=70; ωs=0.2*π; ωp=0.3*π tr_width=ωp-ωs; %计算过渡带宽 M=ceil((As-7.95)*2*π(14.36*tr_width)+1)+1; %按凯泽窗计算滤波器长度 disp([’滤波器的长度为’,num2str(M)]); beta=0.1102*(As-8.7);%计算凯泽窗的β值 n=[0: 1: M-1]; disp([’线性相位斜率为’,num2str(beta)]); w_kai=(kaiser(M,beta))’;%求凯泽窗函数 ωc=(ωs+ωp)2; (db(ωpdelta_ω+1: 1: 501))); disp([’实际通带波动为’,num2str(Rp)]); %以下为作图程序 As=-round(max(db(1: 1: ωsdelta_ω+1))); disp([’最小阻带衰减为’,num2str(As)]); subplot(1,1,1); subplot(2,2,1); stem(n,)’); subplot(2,2,2); stem(n,w_kai); title(’凯泽窗’); axis([0M-101.1]); ylabel(’wd(n)’); subplot(2,2,3); stem(n,’);ylabel(’)’); subplot(2,2,4); plot(ωπ,db); title(’幅度响应dB’); axis([01-10010]); grid; xlabel(’以π为单位的频率’); ylabel(’分贝数dB’); 程序运行结果如图1所示。 实际通带波动为0.04369,最小阻带衰减为70,滤波器长度为89,线性相位斜率为6.7553,符合设计要求。 图4-3凯泽窗设计的高通滤波器响应曲线 4.3.3IIR数字滤波器的设计 4.3.3.1IIR数字滤波器的设计方法 IIR数字滤波器最大的优点是给定一组指标
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整版 基于 matlab 数字滤波器 毕业设计 论文