资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,“滤波器设计软件”设计,基于MATLAB GUI设计滤波器软件设计,“滤波器设计软件”设计 基于MATLAB GUI设计滤波器软,1,一 MATALB GUI介绍,MATALB 可以创建图形用户界面GUI(GraphicalUser Interface),它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。,一 MATALB GUI介绍 MATALB,2,1、IIR滤波器设计原理,滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从,N,阶差分方程:,相应的传输函数为,:,二、IIR滤波器设计原理,1、IIR滤波器设计原理二、IIR滤波器设计原理,3,2、IIR滤波器设计思想,将设计指标归一化处理,根据归一化频率,确定最小阶数,N,和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord,ellipord 等,运用最小阶数,N,设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter,chebyl,cheby2,ellip 和bessel,再用freqz 函数验证设计结果,2、IIR滤波器设计思想将设计指标归一化处理根据归一化频率,,4,3、IIR滤波器设计编程实现,Fs=22050;Fp1=3400;Fs1=5000;Rp=3;Rs=20;%设计指标,wp1=2*Fp1/Fs;ws1=2*Fs1/Fs;%求归一化频率,%确定butterworth 的最小阶数N 和频率参数Wn,n,Wn=buttord(wp1,ws1,Rp,Rs);,w=blackman(n+1);%确定窗口值,b=fir1(n,wn,w);%确定传递函数的分母系数,plot(f,20*log(abs(h)%画幅频响应图,plot(f,angle(h);%画相频响应图,h,f=freqz(b,1);%生成频率响应参数,软件效果显示,3、IIR滤波器设计编程实现Fs=22050;Fp1=34,5,三、FIR滤波器设计原理,1、FIR滤波器设计原理,寻找一个FIR滤波器,使其频率响应H(ej,)逼近理想FIR滤波器的频率响应Hd(ej).,w,(,n,):窗函数序列,要选择合适的形状和长度,三、FIR滤波器设计原理1、FIR滤波器设计原理寻找一个FI,6,2、FIR滤波器设计思想,将设计指标归一化处理,根据归一化频率,选择函数buttord确定最小阶数,N,和频率参数Wn,确定窗口值。Windows指定窗函数类型,默认为Hamming窗;可选Hanning、Hamming、Blackman、triangle、bartlett等窗,确定传递函数的分母系数。函数fir1的调用格式为B=fir1(n,Wn,ftype,Windows),同时选择在此函数中选择要设计的滤波器的类型。,再用freqz 函数验证设计结果,2、FIR滤波器设计思想将设计指标归一化处理根据归一化频率,,7,3、FIR滤波器设计编程实现,Fs=22050;Fp1=3400;Fs1=5000;Rp=3;Rs=20;N=75%设计指标,wp1=2*Fp1/Fs;ws1=2*Fs1/Fs;%求归一化频率,%确定butterworth 的最小阶数N 和频率参数Wn,n,Wn=buttord(wp1,ws1,Rp,Rs);,B,A=butter(N,Wn);%确定传递函数的分子、分母系数,h,f=freqz(b,a,Nn,Fs_value);%生成频率响应参数,plot(f,20*log(abs(h)%画幅频响应图,plot(f,angle(h);%画相频响应图,软件效果显示,3、FIR滤波器设计编程实现Fs=22050;Fp1=34,8,四、基于Matlab GUI的数字滤波器设计思路及实现,MATLAB提供了编写图形用户界面的功能。所谓图形用户界面,简称为GUI,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,四、基于Matlab GUI的数字滤波器设计思路及实现 MA,9,Filter Disign,IIR滤波器,FIR滤波器,Boxcar,Bartlett,Blackman,Hanning,Hamming,Kaiser,Butterworth,Chebyshev,Chebyshev,Ellipse,选择IIR或者FIRFilter设计,Butterworth等Filter选择,窗口选择,1、滤波器设计总框图,Filter DisignIIR滤波器FIR滤波器Boxca,10,2、“滤波器设计软件”设计的GUI界面设计,MATLAB GUI设计界面,“滤波器设计软件”GUI界面设计,2、“滤波器设计软件”设计的GUI界面设计 MATLAB,11,2、设计界面功能显示,选择IIR或者FIRFilter,选择Butterworth、Chebyshev、Chebyshev、Ellipse 滤波器,选择Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口,选择Lowpass、Highpass、Bandpass、Bandstop四种类型,选择图形显示Linear、Logarithmic两种类型,最小阶数设计滤波器,显示最小阶数,选择自定义阶数,阶数输入框,抽样频率Fs,通带临界频率Fp1、Fp2,滤波器阻带临界频率Fst1、Fst2,最大衰减Rp,最小衰减Rs,幅频响应显示,相频响应显示,退出设计界面,手动运行,自动运行,2、设计界面功能显示选择IIR或者FIRFilter选择B,12,(1)Digital Filter下拉菜单,function DigitalFilter_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等)选项屏蔽,else,set(handles.FilterDesign,enable,off);,set(handles.Windows,enable,on),end,3、按钮实现编程,选择IIR屏蔽Windows选择,选择FIR屏蔽Filter Design选择,(1)Digital Filter下拉菜单 3、按钮实现编程,13,(2)Filter Type下拉菜单,function FilterType_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);,end,end,选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,选择带通或者带阻滤波器时,显示相应的带通和带阻的第二个临界频率,(2)Filter Type下拉菜单 选择低通或者高通滤波器,14,(3)Min Order和Custom Orde按钮,选择使用最小阶数设置时,屏蔽自定义阶数的输,function MinOrder_Callback(hObject,eventdata,handles),MinOrder_value=get(handles.MinOrder,Value);,if(MinOrder_value=1),set(handles.Order,visible,off);,else,set(handles.Order,visible,on);end,选择自定义阶数时,显示阶数输入框,function CustomOrderButton_Callback(hObject,eventdata,handles)CustomOrderButton_value=get(handles.CustomOrderButton,Value);,if(CustomOrderButton_value=0),set(handles.Order,visible,off);,else,set(handles.Order,visible,on);end,(3)Min Order和Custom Orde按钮,15,(4)Fp1、Fp2、Fst1、Fst2文本编辑框,参数输入时,在输入抽样频率Fs的前提下,判断滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst2)的归一化频率wp1、wp2、ws1、ws1是否在0,1之间,如不正确显示错误对话框,function Fp1_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,(4)Fp1、Fp2、Fst1、Fst2文本编辑框,16,(5)Run按钮,根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下:,function Run_Callback(hObject,eventdata,handles),%点击Run立即运行AutoChoose,m文件,实现滤波器设计程序,AutoChoose(handl
展开阅读全文