课程设计论文基于Matlab的数字滤波器设计.doc

上传人:sccc 文档编号:4868781 上传时间:2023-05-20 格式:DOC 页数:18 大小:582.01KB
返回 下载 相关 举报
课程设计论文基于Matlab的数字滤波器设计.doc_第1页
第1页 / 共18页
课程设计论文基于Matlab的数字滤波器设计.doc_第2页
第2页 / 共18页
课程设计论文基于Matlab的数字滤波器设计.doc_第3页
第3页 / 共18页
课程设计论文基于Matlab的数字滤波器设计.doc_第4页
第4页 / 共18页
课程设计论文基于Matlab的数字滤波器设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《课程设计论文基于Matlab的数字滤波器设计.doc》由会员分享,可在线阅读,更多相关《课程设计论文基于Matlab的数字滤波器设计.doc(18页珍藏版)》请在三一办公上搜索。

1、桂林电子科技大学课程设计用纸 第- 1 -页 共30页 课程设计(论文)说明书题 目:基于Matlab的数字滤波器设计院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: 学 号: 指导教师: 职 称: 2010 年 12 月 19 日-2 -桂林电子科技大学课程设计用纸 第17页 共17页摘 要本文分别研究了在MATLAB环境下IIR数字滤波器和FIR数字滤波器的设计方法及实现方法。为方便分析者直观、形象、方便的分析滤波器的特性,创新的设计出了图形用户界面滤波器设计系统关键词:数字滤波器;MATLAB; GUI;IIR滤波器;FIR滤波器AbstractIn this thesi

2、s, designs of the Infinite Impulse Response digital filter (IIR) and Finite Impulse Response digital filter (FIR) under MATLAB are studied. We design the Graphical User Interfaces (GUI) of the digital filter design system makes sure of people can analysis the characteristics of the design directly a

3、nd easily. Key words:Digital Filte;MATLAB;GUI;IIR filter;FIR filter目 录引言31 数字滤波技术31.1 滤波器原理31.2 数字滤波器设计方法概述32 FIR数字滤波器42.1 FIR数字滤波器设计原理42.2 FIR滤波器设计思想43 IIR数字滤波器53.1 IIR数字滤波器设计原理53.2 IIR滤波器设计思想64 数字滤波器的GUI设计及编程实现64.1滤波器的设计流程及要求64.2界面设计及编程74.2.1用户界面74.2.2界面的切换94.2.3组件的显示与隐藏94.2.4参数的计算94.2.5错误信息提示104.

4、2.6滤波器的设计114.3 运行和结果显示124.3.1滤波器运行画面124.3.2导入信号及滤波结果14结论15谢辞16参考文献17引言本文分别研究了在MATLAB环境下IIR数字滤波器和FIR数字滤波器的设计方法及实现方法,并进行图形用户界面设计,以显示本文所介绍滤波器的特性。在IIR数字滤波器设计中,采用了完全设计法设计滤波器,讨论了巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev) 滤波器、椭圆(Ellipse)滤波器。在FIR数字滤波器的设计中采用了窗函数法设计FIR滤波器,两类滤波器整个设计过程都是按照理论分析、编程设计、具体实现的步骤进行的。本文设计出了较

5、为直观明了的人机交互界面,滤波器设计的类型、参数均有多个值可供选择,当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱,同时还可以实现mat信号的导入及滤波。1 数字滤波技术1.1 滤波器原理滤波器,顾名思义,其作用是对输入信号起到滤波的作用。如图1的LSI系统中,其时域输入输出关系为:h (n) x(n) y(n) 图1若y(n),x(n)的傅立叶变换存在,则输入输出的频域关系是: 当输入信号x(n) 通过滤波器系统h(n) 后,其输出 y(n) 中不再含有|c的频率成分,仅使|c的信号成分通过。因此,滤波器的形状不同,其滤波后的信号结果也不一样。若滤波器的输入、输出都是离

6、散时间信号,那么该滤波器的单位冲激响应h(n)也必然是离散的,这种滤波器称为数字滤波器(DF,Digital Filter)。当用硬件实现一个DF时,所需元件是延迟器、乘法器和加法器;而利用MATLAB软件时,它仅需线性卷积程序便可实现。而模拟滤波器(AF,Analog Filter)只能用硬件实现。因此DF比AF容易实现,且更容易获得理想的滤波性能。数字滤波器还具有以下优点:精度和稳定性高;系统函数容易改变;灵活性高;不存在阻抗匹配问题;便于大规模集成;可实现多维滤波。1.2 数字滤波器设计方法概述数字滤波器的设计与实现,通常按下述步骤进行:1、根据不同用途提出数字滤波器的技术指标、性能要求

7、。2、设计一个稳定的、因果的数学模型H(z)来逼近所要求的技术指标,并用有限精度的运算实现所设计的系统。3、设计专用的数字硬件来实现这个数字模型,或者通过电子计算机运行程序软件予以实现。IIR滤波器和FIR滤波器的设计方法很不相同:IIR滤波器设计方法有两类,经常用到的一类设计方法是借助于模拟滤波器的设计方法进行的。其设计思路是:先设计模拟滤波器得到传输函数G(s),然后将G(s)按某种方法转换为数字滤波器的系统函数H(z)。这一类方法是基于模拟滤波器的设计方法相对比较成熟,它不仅有完整的设计公式,也有完整的图标供查阅,更可以直接调用MATLAB中的对应的函数进行设计。另一种是直接在频域或者时

8、域中进行设计,设计时必须使用计算机辅助,直接调用MATLAB中的程序或函数即可设计。FIR滤波器不能采用由模拟滤波器设计进行转换的方法,而经常使用的是窗函数法和频率采样法。也可以借助计算机辅助设计软件采用切比雪夫等波纹逼近法进行设计。在这里我们研究窗函数法。2 FIR数字滤波器2.1 FIR数字滤波器设计原理FIR DF具有突出的优点:系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器。因此FIR DF在数字信号处理中得到广泛的应用。但与IIR DF相比,在满足同样的阻带衰减的情况下需要较高的阶数。滤波器阶数越高将占用更多的DSP运算时间。因此,对F IR DF的设计目标是在满

9、足指标要求的情况下尽量减少滤波器的阶数。数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。FIR DF的冲激响应h ( k)是有限长的M 阶F IR DF系统函数可表示为滤波器的输出它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。本文之研究窗函数法2.2 FIR滤波器设计思想在这里我们利用窗函数法设计FIR滤波器。窗函数法的基本想法是选取某一种合适的理想频率选择性滤波器(这种滤波器总是有一个非因果,无限长的脉冲响应),然后将它

10、的脉冲响应截断(或加窗)以得到一个线形相位和因果的FIR滤波器。因此,这种方法的重点在于选择某种恰当的窗函数和一种合适的理想滤波器。窗函数法又称傅立叶级数法, 一般是先给定所要求的滤波器的频率响应Hd (ejw) , 要求设计一个FIR 滤波器的频率响应H(ejw)来逼近Hd(ejw) .设计是在时域进行的, 首先由傅立叶变换导出hd(n) ,因此hd(n)一定是无限长的序列,而h(n) 是有限长的, 即要用有限长的h(n)来逼近无限长的hd(n) , 最有效的方法是截断hd (n),或者说用一个有限长的窗口函数w(n) 来截取hd(n) , 即h(n) = hd(n) w(n),因而窗函数的

11、形状及长度的选择就很关键了. 在MATLAB 中常用的窗函数有bartlett窗, Hanning 窗,Hamming 窗, Blackman 窗,Kaiser 窗等, 这些窗函数各有优缺点, 各有利弊。利用完全设计法设计数字滤波器的一般步骤:(1)将设计指标归一化处理。(2)确定阶数N 和频率参数Wn。(3)确定窗口值。Windows指定窗函数类型,默认为Hamming窗;可选Hann、Hamming、Blackman、bartlett等窗,每种窗都可以由Matlab的相应函数生成。(4)确定传递函数的分母系数。函数fir1的调用格式为B= fir1(n, Wn, ftype, Window

12、s),同时选择在此函数中选择要设计的滤波器的类型。其中,n为滤波器阶数,Wc为截止频率ftype决定滤波器类型,ftype= high,设计高通FIR滤波器,ftype= stop,设计带阻FIR滤波器。(5)再用freqz 函数验证设计结果。3 IIR数字滤波器3.1 IIR数字滤波器设计原理滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程: 相应的传输函数为:设计IIR数字滤波器就是要确定传输函数中的系数、或零极点增益、A,使滤波器的频率特性满足给定的性能指标要求。设计原理主要包括两个方面

13、:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则。根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。3.2 IIR滤波器设计思想IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Cheby

14、shev) 滤波器、椭圆(Ellipse)滤波器、贝塞尔(Bessel)滤波器等,这些滤波器各有特点,供不同设计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求 由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为Fs,归一化频率的计算公式是: 利用完全设计法设计数字滤波器的步骤:(1)将设计指标归一化处理。(2)根据归一化频率,确定最小阶数N 和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord,ellipord 等。(3)运用最小阶数N 设计模拟低通滤波器原型。根据最小阶

15、数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2, ellip 和bessel。如B,A = butter(N,Wn,type) 设计type型巴特沃斯(Butterworth)滤波器filter。N为滤波器阶数,Wc为截止频率, type决定滤波器类型, type= high,设计高通IIR滤波器,ftype= stop,设计带阻IIR滤波器。(4)再用freqz 函数验证设计结果。4 数字滤波器的GUI设计及编程实现4.1 滤波器的设计流程及要求1、首先画出设计的流程图,如图4.1所示:滤波器设计系统FIR滤波器IIR滤波器HannBartlettBl

16、ackmanHammingKaiserbutterChebylCheby2Ellip图4.1 滤波器设计流程图2、设计要求:要有较为简单明了的人机交互界面。能够在两个界面直接切换。滤波器设计的类型、参数均有多个值可供选择或自定义。当用户选择(或输入)滤波器的参数不完整或者有无时,能够提醒用户输入正确信息。当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱等信息。可以实现外部信号的导入。可以实现用设计好的滤波器对导入信号的滤波并显示滤波效果。4.2界面设计及编程4.2.1用户界面在设计此图形用户界面时,根据设计流程图把滤波器分析系统分成三个界面进行设计:主界面,FIR设计界面和

17、IIR设计界面图4.2是滤波器的主界面,在主界面的主要安排了两个选择IIR或FIR滤波器的按钮和一个退出按钮。点击IIR或FIR按钮时,进入到相应的滤波器设计界面,点击退出系时,弹出问题对话框,确认用户是否要退出,用户确认后,关闭界面,清除所有变量。图4.2 滤波器主界面图4.3是FIR滤波器的界面,界面左边的六个图形分别是用显示滤波器的频谱,相频,零极点图,窗函数图,导入信号滤波效果。右边可以对各项参数进行选择或输入。图4.3 FIR滤波器界面图4.4 IIR滤波器界面4.2.2界面的切换在主界面的菜单里可以选择选择IIR或FIR滤波器设计,点击按钮进入到相应的滤波器设计界面。如点击FIR滤

18、波器设计时要先关闭当前的gui界面,然后打开FIR滤波器设计的界面;当点击FIR滤波器设计界面或IIR设计界面的返回按钮时能返回到主界面。界面的切换主要通过通过语句:close(gcf); %关闭当前gui界面或者close(“gui的文件名”);要打开某个已设计好的gui界面,直接输入其文件名即可,如:fir_filter %打开FIR滤波器设计界面这两条结合在一起即可实现两个界面的切换。4.2.3组件的显示与隐藏进入滤波器设计界面后,在滤波器的类型选择项中当选中选择低通或者高通滤波器时,应隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,可以将组件的“Enable”设为“off”

19、,或者直接把它隐藏将它的“visible”设为“off”。set(handles.Fp2,Enable,off); %让Fp2文本框不能输入set(handles.Fs2,Enable,off); %让Fs2文本框不能输入执行上述两条语句后,相应的文本框变成了灰色,效果如图4.5所示。当在滤波器类型中选中带通或带阻滤波器后,应将已隐藏或设为不可用的第二个临界频率重新显示,这是只需将它们的“Enable” 或“visible”设为“on”即可。效果如图4.6所示。自定义阶数文本框,“滤波”按键等的隐藏与显示同理。图4.5 低通、高通滤波器频率参数输入 图4.6 带通、带阻滤波器频率参数输入4.2

20、.4参数的计算1、滤波器阶数的计算在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数 ,其回调函数如下:(1)最小阶数按钮选择使用最小阶数设置时,屏蔽自定义阶数的输入,此时n的值通过用户输入的参数计算得来n=2*(ceil(2.1/(ws1-wp1)+1; %计算Bartlett窗低通滤波器的最小阶数计算得到相应的n值后在文本框中显示出来,如图4.7所示。set(handles.MinOrderDisplay,string,num2str(n)%显示最小阶数(2)自定义按钮选择自定义阶数时,将已屏蔽的文本框重新显示,直接读取用户输入的自定义阶数作为n的值,如图4.8所

21、示。n=Order_value; %读取自定义阶数 图4.7 使用最小阶数设计 图4.8 使用自定义阶数设计4.2.5错误信息提示在点击确定按钮运行设计滤波器程序之前,我们首先要检查用户所输入的参数是否齐全,是否有误,如果不齐全或者有误则通过错误信息提示对话框提示用户错误信息让用户重新输入,同时还要中断程序,不让它执行后面的语句。(1) 判断是否已选择滤波器类型我们用一个条件语句来对用户是否已选择了滤波器类型进行判断:if(lpfilter_value=0&hpfilter_value=0&bpfilter_value=0&bsfilter_value=0) %判断是否已选择滤波器类型 err

22、ordlg(请先选择滤波器类型:低通、高通、带通或带阻,错误信息); returnend如果用户没有选择滤波器类型,则通过错误信息提示对话框“errordlg”提醒用户先选择相应的选项,同时用“return”中断程序并返回,如图4.9所示。图4.9 没有选择滤波器类型时的错误提示信息(2) 判断各项参数是否已填写完整或者是否有误当选择低通滤波器时,用一条条件语句来判断各项参数是否已输入完整:if(isnan(Fs_value)=1)|(isnan(Fp1_value)=1)|isnan(Fs1_value)=1)若没有输入完整,则通过错误信息提示对话框“errordlg”提醒用户先填写完整相应

23、的选项,同时用“return”中断程序并返回,如图4.10所示。在用户填写完整相应的信息后,还要进一步检查用户输入的参数是否有误,如在设计低通滤波器时如果用户输入的Fs1的值小于Fp1的值,此时应采用错误信息提示对话框提示用户更正,并中断程序。如图4.11所示。 if(Fs1_valueFp1_value) 图4.10 错误输入不完整的错误提示 图4.11 参数输入有误的错误提示其他类型滤波器参数是否正确的判断,是否已选择滤波器阶数的判断等同理,在此就不一一赘述。4.2.6滤波器的设计1、FIR滤波器(1)求归一化频率设计低通、高通时wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;设计

24、带通带阻滤波器时wp1=2*Fp1 /Fs;ws1=2*Fs1 /Fs;wp2=2*Fp2 /Fs;ws2=2*Fs2 /Fs;(2)确定阶数n 和频率参数Wnn可以由用户自定义或者由参数计算得最小阶数n。设计低通、高通滤波器时,Wn= (wp1+ws1)/2;设计带通或带阻滤波器时Wn=(wp1+ws1)/2,(wp2+ws2)/2。(3) 确定窗口值Window指定窗函数类型,Window=Hann(n+1); Window=Hamming(n+1)Window= Blackman(n+1)Window=bartlett(n+1)(4) 确定传递函数的分母系数函数fir1的调用格式为b=

25、fir1(n, Wn, type, Windows),同时选择在此函数中选择要设计的滤波器的类型。其中,n为滤波器阶数,Wc为截止频率,type决定滤波器类型,type= high,设计高通FIR滤波器,ftype= stop,设计带阻FIR滤波器。(5)生成频率响应参数h,f=freqz(b,1); (6)画幅频响应图plot(f,20*log(abs(h) (7)画相频响应图plot(f,angle(h); 2、IIR滤波器(1)将设计指标归一化处理,方法同FIR滤波器。(2)根据归一化频率,确定最小阶数N 和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,che

26、b2ord,ellipord 等。(3)运用最小阶数N 设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2, 和ellip。如B,A = butter(N,Wn,type) 设计type型巴特沃斯(Butterworth)滤波器filter。(4)生成频率响应参数h,f=freqz(b,a,Nn,Fs_value);(5)画幅频响应图plot(f,20*log(abs(h) (6)画相频响应图plot(f,angle(h);4.2.7信号的导入与滤波(1)导入wat信号FileName,PathName=uigetfile(

27、*.mat,Select the Data file); file=strcat(PathName,FileName); x=importdata(file);(2)滤波用以设计好的滤波器对导入的信号进行滤波;y=filter(b,1,x);4.3 运行和结果显示4.3.1滤波器运行画面进入主界面后,点击进入IIR滤波器设计,选择要设计的滤波器选项,编辑框中输人要求设计的数字滤波器的性能指标,如图4.12、4.13所示。图4.12 IIR低通滤波器图4.13 FIR高通滤波器4.3.2导入信号及滤波结果1、导入mat信号,并画出其频谱图。由图4.14可以看出该信号主要由三个频率分量组成。图4.

28、14 导入的信号滤波前波形2、滤波效果图4.15、4.16分别用设计好的低通、带通滤波器滤波对图4.14所示的信号进行滤波。图4.15的低通滤波器通带截止频率为250Hz,阻带截止频率为400Hz,经改滤波器滤波后可以看出高于400Hz的频率分量明显被滤掉了,但低频信号也有一点的衰减。图4.15 低通滤波器及滤波效果图4.16 带通滤波器及滤波效果结论:在设计滤波器时要先明确设计的任务,根据要求构思好流程图,同时要理解并掌握各种类型滤波器的原理以及设计思想。使用GUI设计的时候要详细掌握菜单和控件的功能,应该如何调用。根据要实现的功能放置相应的按键和图标等,最后编写对象的相应代码,实现控件的交

29、互调用。在发现问题的同时要学会从相应的书籍期刊等找到相应的知识点,还有要充分利用好MATLAB的帮助文档谢 辞在做课程设计的这段时间里,我收获颇丰,同时体会到了学习带来的乐趣。值此在论文完成之际。我谨向所有关心、爱护、帮助我的人们表示最诚挚的感谢与最美好的祝愿。本论文是在王健老师的悉心指导之下完成的,在此表示深切的谢意与祝福!本论文的完成也离不开我的舍友和朋友的关心和帮助,他们对待学习的态度和学习的方法也深深的影响了我,在此也向他们表示深切谢意。参考文献1 MATLAB7.6从入门到精通.张琨、毕靖,丛宾编著. 北京:电子工业出版社,20092 王宏MATLAB6.5及其在数字信号处理中的应用北京:清华大学出版社,20043 数字信号处理基于计算机的方法(第三版).(美)Sankik K .Mitra著; 阔永红改编.北京:电子工业出版社,200617

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号