




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1桂林电子科技大学MATLAB课程设计报告摘要面对庞杂繁多的原始信号,如何提取所需信号、抑制不需要的信号这就需要使用滤波器。滤波器的作用主要是选择所需频带的信号内容而抑制不需要的其他频带的信号内容。数字滤波器因其精度高、可靠性好、灵活性大等优点,在语音信号处理、信号频谱估计、信号去噪、无线通信中的数字变频以及图像处理等工程实际应用中都很广泛。根据其冲击响应函数的时域特性可将数字滤波器分为IIR(有限长冲击响应)和FIR(无限长冲击响应)。作为强大的计算软件,MATLAB提供了编写图形用户界面的功能。所谓图形用户界面,简称为GUI,是由各种图形对象,如图形窗口菜单按钮、文本框等构建的用户界面。MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。MATLAB将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。关键词:MATLABGUIIIR滤波器FIR滤波器目录TOC\o"1-3"\u1设计任务 12MATLABGUI的简介 23滤波器设计原理 33.1滤波器概述 33.2IIR数字滤波器 43.2.1IIR数字滤波器设计原理 43.2.2IIR滤波器设计思想 53.2.3IIR滤波器设计编程实现 63.3FIR数字滤波器 83.3.1FIR数字滤波器设计原理 83.3.2FIR滤波器设计思想 94基于MatlabGUI的数字滤波器设计思路及实现 124.1GUI界面设计概述 124.2“滤波器设计软件”设计所实现任务 144.3基于MatlabGUI的数字滤波器设计实现 164.3.1“滤波器设计软件”GUI界面设计 164.3.2“滤波器设计软件”回调函数编写 174.3.3AutoChoose.m程序的编写 224.4运行和结果显示 285设计总结和心得 335.1设计总结 335.2设计心得 34Abstract 35参考文献 36附录1设计任务1设计目的1.巩固所学习过的关于数字信号处理的滤波器的设计2.学习使用MATLABGUI设计工具应用平面2设计要求要求:“滤波器设计软件”设计1、要有人机交互界面。2、滤波器设计的类型、参数均有多个值可供选择。3、当用户选择(或输入)滤波器的参数时,能够及时显示设计好的滤波器的频谱。4、该软件可设计FIR或IIR型滤波器至少一种。2MATLABGUI的简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB是矩阵实验室(MatrixLaboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多,并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。MATALB可以创建图形用户界面GUI(GraphicalUserInterface),它是用户和计算机之间交流的工具。MATLAB将所有GUl支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。3滤波器设计原理3.1滤波器概述随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像,自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理中,数字滤波器占有极其重要的地位。现代数字滤波器可以用软件或设计专用的数字处理硬件两种方式来实现,用软件来实现数字滤波器优点是随着滤波器参数的改变,很容易改变滤波器的性能。根据数字滤波器单脉冲响应的时域特性可将数字滤波器分为两种,即IIR(InfiniteImpulseResponse)无限长脉冲响应数字滤波器和FIR(FiniteImpulseResponse)有限长脉冲响应数字滤波器。从功能上分类,可分为低通、高通、带通、带阻滤波器。3.2IIR数字滤波器3.2.1IIR数字滤波器设计原理滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差分方程:相应的传输函数为:设计IIR数字滤波器就是要确定传输函数中的系数、或零极点增益、、A,使滤波器的频率特性满足给定的性能指标要求。设计原理主要包括两个方面:一是根据设计指标,先设计出相应的模拟滤波器再通过脉冲响应不变法或双线性变换法转换成对应的数字滤波器;二是选择一种优准则,如最小均方准则,再在,先最误差此准则下求出滤波器传输函数的系数。根据设计理论,在MATLAB环境下设计IIR数字滤波器主要有四种方法:一是典型设计法;二是完全设计法;三是最优设计法;四是工具设计法。由于完全设计法程序简单,我们在这里利用完全设计法设计滤波器。3.2.2IIR滤波器设计思想IIR滤波器设计思想是:利用已有的模拟滤波器设计理论,首先根据设计指标设计一个合适的模拟滤波器,然后再通过脉冲响应不变法或双线性变换法,完成从模拟到数字的变换。常用的模拟滤波器有巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Ellipse)滤波器等,这些滤波器各有特点,供不同设计要求选用。滤波器的模拟数字变换,通常是复变函数的映射变换,也必须满足一定的要求由于数字滤波器传输函数只与频域的相对值有关,故在设计时可先将滤波器设计指标进行归一化处理,设采样频率为Fs,归一化频率的计算公式是:利用完全设计法设计数字滤波器的步骤:(1)将设计指标归一化处理。(2)根据归一化频率,确定最小阶数N和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord等。(3)运用最小阶数N设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter,chebyl,cheby2和ellip。如[B,A]=butter(N,Wn,'type')设计'type'型巴特沃斯(Butterworth)滤波器filter。N为滤波器阶数,Wc为截止频率,type决定滤波器类型,type=high,设计高通IIR滤波器,ftype=stop,设计带阻IIR滤波器。(4)再用freqz函数验证设计结果。3.2.3IIR滤波器设计编程实现例如选择设计IIR的Butterworth低通滤波器,其Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB程序和效果图(图2)如下:Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB,n=5;%设计指标wp1=2*Fp1/Fs;ws1=2*Fs1/Fs;%求归一化频率[n,Wn]=buttord(wp1,ws1,Rp,Rs);%确定butterworth最小阶数N和频率参数Wn[B,A]=butter(N,Wn);%确定传递函数的分子、分母系数[h,f]=freqz(b,a,Nn,Fs_value);%生成频率响应参数plot(f,20*log(abs(h)))%画幅频响应图plot(f,angle(h));%画相频响应图3.3FIR数字滤波器3.3.1FIR数字滤波器设计原理FIR具有突出的优点:系统总是稳定的、易于实现线性相位、允许设计多通带(或多阻带)滤波器。因此FIR在数字信号处理中得到广泛的应用。对FIR的设计目标是在满足指标要求的情况下尽量减少滤波器的阶数。数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。FIR的冲激响应h(k)是有限长的M阶FIRDF系统函数可表示为滤波器的输出它的设计问题实质上是确定能满足所要求的转移序列或脉冲响应的常数问题,设计方法主要有窗函数法、频率采样法和等波纹最佳逼近法等。若要逼近的理想滤波器的频率响应为常用的有巴特沃思滤波器、切比雪夫型滤波器和椭圆滤波器。3.3.2FIR滤波器设计思想在这里我们利用窗函数法设计FIR滤波器。窗函数法的基本想法是选取某一种合适的理想频率选择性滤波器(这种滤波器总是有一个非因果,无限长的脉冲响应),然后将它的脉冲响应截断(或加窗)以得到一个线形相位和因果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),因而窗函数的形状及长度的选择就很关键了.在MATLAB中常用的窗函数有矩形窗,Hanning窗,Hamming窗,Blackman窗,Kaiser窗等,这些窗函数各有优缺点,各有利弊,默认值是Hamming窗。利用完全设计法设计数字滤波器的步骤:(1)将设计指标归一化处理。(2)根据归一化频率,选择函数buttord确定最小阶数N和频率参数Wn。(3)确定窗口值。Windows指定窗函数类型,默认为Hamming窗;可选Hanning、Hamming、Blackman、triangle、bartlett等窗,每种窗都可以由Matlab的相应函数生成。(4)确定传递函数的分母系数。函数fir1的调用格式为B=fir1(n,Wn,'ftype',Windows),同时选择在此函数中选择要设计的滤波器的类型。其中,n为滤波器阶数,Wc为截止频率ftype决定滤波器类型,ftype=high,设计高通FIR滤波器,ftype=stop,设计带阻FIR滤波器。(5)再用freqz函数验证设计结果。3.3.3F例如选择设计FIR的Blackman窗的低通滤波器,其Fs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dBFs=1000Hz,Fp1=300Hz,Fs1=400Hz,Rp=3dB,Rs=15dB;n=5;%设计指标wp1=2*Fp1/Fs;ws1=2*Fs1/Fs;%求归一化频率[n,Wn]=buttord(wp1,ws1,Rp,Rs);%确定的最小阶数N和频率参数Wn[b,a]=butter(N,Wn);%确定传递函数的分子、分母系数w=blackman(n+1);%确定窗口值b=fir1(n,wn,w);%确定传递函数的分母系数[h,f]=freqz(b,1);%生成频率响应参数plot(f,20*log(abs(h)))%画幅频响应图plot(f,angle(h));%画相频响应图4基于MatlabGUI的数字滤波器设计4.2“滤波器设计软件”设计所实现任务“滤波器设计软件”设计所实现任务如下:1、能够实现人机交互2、在下拉DigitalFilter菜单里选择IIR和FIR滤波器设计3、当选择IIR滤波器时,能够选择巴特沃斯(Butterworth)、切比雪夫Ⅰ(ChebyshevⅠ)滤波器、切比雪夫Ⅱ(ChebyshevⅡ)滤波器、椭圆(Ellipse)滤波器4、当选择FIR滤波器是,能够选择Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口设计滤波器5、在下拉菜单FilterType中选择滤波器类型,能够选择Lowpass、Highpass、Bandpass、Bandstop四种类型6、在下拉菜单DisplayType中选择图形显示类型,能够选择Linear、Logarithmic两种类型7、在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数8、在参数输入中,可输入抽样频率Fs、滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)、通带内最大衰减Rp、通带内最小衰减Rs9、设计的滤波器的幅频响应和幅频响应显示在界面中MATLAB中的属性控制非常多,要设置哪些对象的属性,哪些可以不设置,都需针对具体问题具体分析解决。接下来再通过控件布置编辑器来设置控件的对齐方式及间距等,以完善界面功能。按要求设计好的“滤波器设计软件”主面板见图4,共包括5个区域:(1)图形区:用于显示各模块的仿真曲线(2)参数设区:由个静态文本框和个编辑框以及类型选择按纽组成,实时的进行系统参数的设定和滤波器原型的选定(3)对象模型区:由下拉菜单选定数字滤波器类型,当用户的输人参数发生变化时,可通过单击响应的“Run”按钮,实现设计结果的实时刷新与显示(4)数据显示区:对应于图形显示结果,实时显示滤波器阶次和分子分母多项式系数。图4“滤波器设计软件”主面板4.3基于MatlabGUI的数字滤波器设计实现1、DigitalFilter下拉菜单在下拉DigitalFilter菜单里选择IIR和FIR滤波器设计选择IIR或者FIR屏蔽相应的选项,当选择IIR选项时,使FIR的Windows的选择窗口不能使用,程序和效果图(图8、图9)如下:functionDigitalFilter_Callback(hObject,eventdata,handles)%读取此时选择的滤波器选择,“IIR、FIR”DigitalFilter_value=get(handles.DigitalFilter,'Value');%当选择了IIR时,使窗口选项屏蔽if(DigitalFilter_value==1)set(handles.FilterDesign,'enable','on');set(handles.Windows,'enable','off')%当选择了FIR时,使IIR的滤波器(Butterworth、ChebyshevⅠ等)选项屏蔽elseset(handles.FilterDesign,'enable','off');set(handles.Windows,'enable','on')end图8IIR滤波器选择图9FIR滤波器选择2、FilterType下拉菜单在下拉菜单FilterType中选择滤波器类型选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,使其频率参数不能输入,程序和效果图(图10、图11)如下:functionFilterType_Callback(hObject,eventdata,handles)%读取此时设计的滤波器的类型,“Lowpass、Highpass、Bandpass、Bandstop”FilterType_value=get(handles.FilterType,'Value');%当选择Lowpass或者Highpass,屏蔽相应的临界频率的显示if((FilterType_value==1)||(FilterType_value==2))set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');set(handles.text17,'visible','off');set(handles.text19,'visible','off');set(handles.text6,'visible','off');set(handles.text10,'visible','off');else%当选择Bandpass或者Bandstop,使相应的临界频率的显示,使参数能够输入if((FilterType_value==3)||(FilterType_value==4))set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on');set(handles.text17,'visible','on');set(handles.text19,'visible','on');set(handles.text6,'visible','on');set(handles.text10,'visible','on');endend图10低通、高通滤波器频率参数输入图11低通、高通滤波器频率参数输入3、MinOrder和CustomOrde按钮在设计滤波器阶数时,可选择自定义阶数和利用最小阶数设计滤波器,并显示最小阶数,这里涉及的控件MinOrder和CustomOrder,其回调函数如下:(1)按钮MinOrder选择使用最小阶数设置时,屏蔽自定义阶数的输入,如图12:functionMinOrder_Callback(hObject,eventdata,handles)MinOrder_value=get(handles.MinOrder,'Value');if(MinOrder_value==1)set(handles.Order,'visible','off');elseset(handles.Order,'visible','on');end(2)按钮CustomOrder选择自定义阶数时,显示阶数输入框,如图13functionCustomOrderButton_Callback(hObject,eventdata,handles)CustomOrderButton_value=get(handles.CustomOrderButton,'Value');if(CustomOrderButton_value==0)set(handles.Order,'visible','off');elseset(handles.Order,'visible','on');end(3)其中涉及Run控件中的程序如下:①显示最小阶数set(handles.MinOrderDisplay,'string',num2str(n))②当选择了自定义阶数时,读取自定义阶数if(MinOrder_value==0)n=str2double(get(handles.Order,'String'))end图12使用最小阶数设计Filter图13使用自定义阶数设计Filter4、Fp1、Fp2、Fst1、Fst2文本编辑框参数输入时,在输入抽样频率Fs的前提下,判断滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)的归一化频率wp1、wp2、ws1、ws1是否在[0,1]之间,如不正确显示错误对话框,其程序和效果图(图14)如下:functionFp1_Callback(hObject,eventdata,handles)%检查输入的通带临界频率Fp1的归一化频率是否在[0,1]之间Fs_value=str2double(get(handles.Fs,'String'));Fp1_value=str2double(get(handles.Fp1,'String'));wp1=2*Fp1_value/Fs_value;%如果不在[0,1]之间,显示输入错误对话框if(wp1>=1)errordlg(‘wp1=2*Fp1/Fs,归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)end图14输入参数错误信息框显示Fp2、Fst1、Fst2的回调函数同理编程5、Run按钮根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下:functionRun_Callback(hObject,eventdata,handles)%点击Run立即运行AutoChoose,m文件,实现滤波器设计程序AutoChoose(handles)6、AutoRun按钮当选择了AutoRun按钮时,能够根据所选的IIR的滤波器(Butterworth、ChebyshevⅠ等)、FIR的窗口选项、图形显示类型(Linear、Logarithmic)立即显示滤波器的幅频特性和相频特性图,其中IIR的滤波器(Butterworth、ChebyshevⅠ等)的回调函数程序如下:functionFilterDesign_Callback(hObject,eventdata,handles)AutoRun_value=get(handles.AutoRun,'Value');%当选择了Filter(Butterworth、ChebyshevⅠ等)中一种Filter运行AutoChoose,m文件if(AutoRun_value==1)AutoChoose(handles)end7、Quit按钮退出滤波器设计窗口,其程序如下:functionQuit_Callback(hObject,eventdata,handles)%点击Quti按钮退出Close4.3.3AutoChoose.m程序的编写4.4运行和结果显示显示不同滤波器的显示结果1、选择设计IIR低通滤波器,其Fs=1000Hz,Fp1=200Hz,Fs1=300Hz,Rp=3dB,Rs=15dB,n=5,利用四种不同滤波器进行设计,如图17、18、19、20显示:图17Butterworth低通滤波器图18ChebyshevⅠ低通滤波器图19ChebyshevⅡ低通滤波器图20Ellipse低通滤波器2、选择设计FIR带通滤波器,其Fs=4000Hz,Fp1=1000Hz,Fp2=1500Hz,Fs1=800Hz,Fs2=1800Hz,Rp=3dB,Rs=15dB,n=5,利用带通滤波器进行Boxar和Bartlett设计,如图21、22显示:图21Boxar窗带通滤波器图22Bartlett窗带通滤波器5设计总结和心得5.1设计总结GUI是实现人机交互的中介,具有强大的功能,可以完成许多复杂的程序模块。使用它,需要具有一定的知识储备和必要的经验技巧。并且要充分利用好MATLAB
的帮助文档,仔细研读HELP是最好的办法。需要了解函数句柄等必要基础知识,熟悉各控件对象的基本属性和方法操作,知晓不同控件的合适使用条件及其特有的功能,并会采用不同的使用手段来实现相同功能的设计。同时还需要详细掌握菜单和控件。菜单很简单,就是弄清除菜单之间的关系和如何调用就可以。控件的使用主要是用好CreateFcn和Callback属性。CreateFcn中的语句就是在程序运行时,就立即执行脚本。如果希望界面可控,那么最好用Callback属性。在相应控件下,添加相应的脚本就可以实现比较复杂计算绘图等功能。在设计GUI的时候,要注意一定的原则和步骤,分析界面所要求实现的主要功能,明确设计任务,构思草图,设计界面和属性,编写对象的相应代码,实现控件的交互调用。
对于GUI在数字信号处理中的应用中,数字信号处理这门学科的知识是基础,要掌握数字信号处理的相关知识的原理后,并用代码来实现,才能很好地结合MATLAB进行GUI编程。5.2设计心得实验之前,由于我们在大二下学期已经开始接触了MATLAB,而且这学期的数字信号处理课程也需要使用MATLAB进行数据处理,这为我们“滤波器软件的设计”提供了一定的基础,也就是可以利用以前的一些设计程序编写滤波器的实现。但由于这个设计是软件的设计,我们感觉还是有一定的难度,就感觉像是接触一个新的事物。不过,就像事物都是有内在联系的,在设计编程的时候我们发现我们可以利用以前学的C语言、Java语言的一些基础语言来编写回调函数。在编写的过程中,我们出现了很多的小问题,如刚开始如何实现画图显示频谱图。这在我们的参考书中,都没有找到实现的方法,此时最好的帮手应该就是网络了。通过网上搜索我们发现了许多MATLABGUI各种控件的编程实现的方法,通过一点一点的理解程序的编写,同时也了解了一些编程的实现。还有利用好MATLAB
的帮助文档,也能起到事半功倍。通过这次的课程设计我们巩固了数字信号处理课程中的滤波器的设计,也了解了利用MATALB创建图形用户界面GUI的知识,不管以后利用这个功能的机会多不多,我们都提过了学习新知识的能力,这也是我们应该要收获的能力。只有学会了学习,获得了学习的能力,才能为我们今后的再学习打下基础。AbstractFacingthehugerangeoforiginalsignal,howtoextracttherequiredsignalandsuppressunwantedsignalswhichneedtousethefilter.Theroleoffiltersistoselectthedesiredsignalfrequencybandandsuppressthecontentsoftheotherbandsdonotneedthecontentsofthesignal.Digitalfiltersbecauseoftheirhighaccuracy,reliability,andflexibilityadvantages,inthespeechsignalprocessing,signalspectrumestimation,signalde-noising,thenumberofwirelesscommunicationsinfrequencyaswellasimageprocessingandotherprojectsarewidepracticalapplication.Impulseresponsefunctionsinaccordancewithitstime-domaincharacteristicscanbedividedintodigitalfilterIIR(finiteimpulseresponse)andFIR(infiniteimpulseresponse).Asapowerfulsoftware,MATLABprovidesagraphicaluserinterfacetopreparethefunction.Theso-calledgraphicaluserinterface,referredtoastheGUI,byavarietyofgraphicobject,suchasthegraphicswindowmenubutton,textbox,suchasbuildingauserinterface.
MATALBcancreateagraphicaluserinterfaceGUI(GraphicalUserInterface),itisbetweenuserandcomputertools.MATLABsupportforallusersGUlcontrolsareintegratedinthisenvironmentandprovidetheinterfaceappearanceandbehaviorinresponsetothewayattributesettingsmethods,withtheimprovedversion,thiscapabilitywillcontinuetostrengthen.Andapowerfulgraphicscapabilities,caneasilyaccesstohigher-qualitycurve.Keywords:MATLABGUIIIRfilterFIRfilter参考文献1.程佩青编著.数字信号处理教程.第三版.北京:清华大学出版社,2007.22.徐成波陶红艳杨菁杨如明编著.数字信号处理及MATLAB实现.第二版.北京:清华大学出版社,2008.13.王宏.MATLAB6.5及其在数字信号处理中的应用.北京:清华大学出版社附录附主程序部分functionvarargout=Filter(varargin)%FILTERM-fileforFilter.fig%FILTER,byitself,createsanewFILTERorraisestheexisting%singleton*.%%H=FILTERreturnsthehandletoanewFILTERorthehandleto%theexistingsingleton*.%%FILTER('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinFILTER.Mwiththegiveninputarguments.%%FILTER('Property','Value',...)createsanewFILTERorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeFilter_OpeningFunctiongetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.AllinputsarepassedtoFilter_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%EdittheabovetexttomodifytheresponsetohelpFilter%LastModifiedbyGUIDEv2.503-Jun-200901:02:47%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@Filter_OpeningFcn,...'gui_OutputFcn',@Filter_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%ExecutesjustbeforeFilterismadevisible.functionFilter_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstoFilter(seeVARARGIN)%ChoosedefaultcommandlineoutputforFilterhandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesFilterwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure1);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=Filter_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;functionFs_Callback(hObject,eventdata,handles)%hObjecthandletoFs(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofFsastext%str2double(get(hObject,'String'))returnscontentsofFsasadouble%Executesduringobjectcreation,aftersettingallproperties.functionFs_CreateFcn(hObject,eventdata,handles)%hObjecthandletoFs(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionFp1_Callback(hObject,eventdata,handles)%¼ì²éÊäÈëµÄͨ´ø±ßԵƵÂÊÊÇ·ñ¡¾0£¬1¡¿Fs_value=str2double(get(handles.Fs,'String'));Fp1_value=str2double(get(handles.Fp1,'String'));wp1=2*Fp1_value/Fs_value;if(wp1>=1)errordlg('wp1=2*Fp1/Fs,‘归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)end%hObjecthandletoFp1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofFp1astext%str2double(get(hObject,'String'))returnscontentsofFp1asadouble%Executesduringobjectcreation,aftersettingallproperties.functionFp1_CreateFcn(hObject,eventdata,handles)%hObjecthandletoFp1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionFp2_Callback(hObject,eventdata,handles)Fs_value=str2double(get(handles.Fs,'String'));Fp2_value=str2double(get(handles.Fp2,'String'));wp2=2*Fp2_value/Fs_value;if(wp2>=1)errordlg('wp2=2*Fp2/Fs,¹éÒ»»¯ÆµÂʲ»ÔÚ¡¾0£¬1¡¿·¶Î§ÄÚ£¬ÇëÊäÈëÕýÈ·µÄ²ÎÊý','´íÎóÐÅÏ¢')end%hObjecthandletoFp2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofFp2astext%str2double(get(hObject,'String'))returnscontentsofFp2asadouble%Executesduringobjectcreation,aftersettingallproperties.functionFp2_CreateFcn(hObject,eventdata,handles)%hObjecthandletoFp2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionFs1_Callback(hObject,eventdata,handles)Fs_value=str2double(get(handles.Fs,'String'));Fs1_value=str2double(get(handles.Fs1,'String'));ws1=2*Fs1_value/Fs_value;if(ws1>=1)errordlg('wp1=2*Fp1/Fs,‘归一化频率不在【0,1】之间,请输入正确的参数’,‘错误信息’)end%hObjecthandletoFs1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofFs1astext%str2double(get(hObject,'String'))returnscontentsofFs1asadouble%Executesduringobjectcreation,aftersettingallproperties.functionFs1_CreateFcn(hObject,eventdata,handles)%hObjecthandletoFs1(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunctionFs2_Callback(hObject,eventdata,handles)Fs_value=str2double(get(handles.Fs,'String'));Fs2_value=str2double(get(handles.Fs2,'String'));ws2=2*Fs2_value/Fs_value;if(ws2>=1)errordlg('ws2=2*Fs2/Fs,¹éÒ»»¯ÆµÂʲ»ÔÚ¡¾0£¬1¡¿·¶Î§ÄÚ£¬ÇëÊäÈëÕýÈ·µÄ²ÎÊý','´íÎóÐÅÏ¢')end%hObjecthandletoFs2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofFs2astext%str2double(get(hObject,'String'))returnscontentsofFs2asadouble%Executesduringobjectcreation,aftersettingallproperties.functionFs2_CreateFcn(hObject,eventdata,handles)%hObjecthandletoFs2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');end%ExecutesonselectionchangeinFilterType.functionFilterType_Callback(hObject,eventdata,handles)FilterType_value=get(handles.FilterType,'Value');if(FilterType_value==1)set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');set(handles.text17,'visible','off');set(handles.text19,'visible','off');set(handles.text6,'visible','off');set(handles.text10,'visible','off');elseif(FilterType_value==2)set(handles.Fp2,'visible','off');set(handles.Fs2,'visible','off');set(handles.text17,'visible','off');set(handles.text19,'visible','off');set(handles.text6,'visible','off');set(handles.text10,'visible','off');elseif(FilterType_value==3)set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on');set(handles.text17,'visible','on');set(handles.text19,'visible','on');set(handles.text6,'visible','on');set(handles.text10,'visible','on');elseif(FilterType_value==4)set(handles.Fp2,'visible','on');set(handles.Fs2,'visible','on');set(handles.text17,'visible','on');set(handles.text19,'visible','on');set(handles.text6,'visible','on');set(handles.text10,'visible','on');endendendend%hObjecthandletoFilterType(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:contents=get(hObject,'String')returnsFilterTypecontentsascellarray%contents{get(hObject,'Value')}returnsselecteditemfromFilterType%ExecutesonselectionchangeinWindows.functionWindows_Callback(hObject,eventdata,handles)AutoRun_value=get(handles.AutoRun,'Value');if(AutoRun_value==1)AutoChoose(handles)end%hObjecthandletoWindows(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:contents=get(hObject,'String')returnsWindowscontentsascellarray%contents{get(hObject,'Value')}returnsselecteditemfromWindows%ExecutesonselectionchangeinDigitalFilter.functionDigitalFilter_Callback(hObject,eventdata,handles)DigitalFilter_value=get(handles.DigitalFilter,'Value');if(DigitalFilter_value==1)set(handles.FilterDesign,'enable','on');set(handles.Windows,'enable','off');elseset(handles.FilterDesign,'enable','off');set(handles.Windows,'enable','on')endAutoRun_value=get(handles.AutoRun
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《大学生心理健康》课件 主题10 生命与成长:踏上成为自己的英雄之旅
- 银行预防诈骗安全宣传
- DB34-T 4697-2024 水电站机组寿命评估技术规范
- 高中主题班会 高一上学期《弘扬体育精神塑造少年英姿》主题班会课件
- 珐琅瓷美术课件
- 防溺水防诈骗安全教育
- 防恐防范培训
- 幼儿园教育案例故事
- 教育实验:求真还是求善
- 物理-高考物理章节练习
- 交易的真相:从1000到1 83亿
- 输变电工程建设全过程环境风险识别与评价
- 全业务端到端-L1- 中国移动认证考试L1题库(附答案)
- 附件1:中国联通动环监控系统B接口技术规范(V3.0)
- 云南省机关事业单位工人技术等级评定申报表
- 数字电子基础康华光课件
- 江西省建筑工程竣工备案表
- 医疗设备台帐与维护登记本
- 2023年全国医学考博英语试题
- 《锉削方法训练》教案
- 2023年白银有色集团招聘笔试题库及答案解析
评论
0/150
提交评论