《滤波器设计软件课件》由会员分享,可在线阅读,更多相关《滤波器设计软件课件(20页珍藏版)》请在金锄头文库上搜索。
1、“滤波器设计软件”设计,基于MATLAB GUI设计滤波器软件设计,一 MATALB GUI介绍,MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。,1、IIR滤波器设计原理 滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从N阶差
2、分方程: 相应的传输函数为 :,二、IIR滤波器设计原理,2、IIR滤波器设计思想,将设计指标归一化处理,根据归一化频率,确定最小阶数N 和频率参数Wn。可供选用的阶数选择函数有:buttord,cheblord,cheb2ord,ellipord 等,运用最小阶数N 设计模拟低通滤波器原型。根据最小阶数直接设计模拟低通滤波器原型,用到的函数有:butter, chebyl,cheby2, ellip 和bessel,再用freqz 函数验证设计结果,3、 IIR滤波器设计编程实现,Fs=22050;Fp1=3400;Fs1=5000;Rp=3;Rs=20;%设计指标,wp1=2*Fp1 /F
3、s;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); %生成频率响应参数,软件效果显示,三、FIR滤波器设计原理,1、FIR滤波器设计原理,寻找一个FIR滤波器,使其频率响应H(ej)逼近理想FIR滤波器的频率响应Hd(ej).,w(n):
4、窗函数序列,要选择合适的形状和长度,2、FIR滤波器设计思想,将设计指标归一化处理,根据归一化频率,选择函数buttord确定最小阶数N 和频率参数Wn,确定窗口值。Windows指定窗函数类型,默认为Hamming窗;可选Hanning、Hamming、Blackman、triangle、bartlett等窗,确定传递函数的分母系数。函数fir1的调用格式为B= fir1(n, Wn, ftype, Windows),同时选择在此函数中选择要设计的滤波器的类型。,再用freqz 函数验证设计结果,3、 FIR滤波器设计编程实现,Fs=22050;Fp1=3400;Fs1=5000;Rp=3;
5、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); %画相频响应图,软件效果显示,四、基于Matlab GUI的数字滤波器设计思路及实现,MATLAB提供了编写图形用户界面的功能。所谓图形用户
6、界面, 简称为GUI,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,选择IIR或者FIRFilter设计,Butterworth等Filter选择,窗口选择,1、滤波器设计总框图,2、“滤波器设计软件”设计的GUI界面设计,MATLAB GUI设计界面,“滤波器设计软件” GUI界面设计,2、设计界面功能显示,选择IIR或者FIRFilte
7、r,选择Butterworth、 Chebyshev、 Chebyshev 、 Ellipse 滤波器,选择Boxar、Bartlett、Blackman、Hanning、Hamming、Kaiser窗口,选择Lowpass、Highpass、Bandpass、Bandstop四种类型,选择图形显示Linear、Logarithmic两种类型,最小阶数设计滤波器,显示最小阶数,选择自定义阶数,阶数输入框,抽样频率Fs,通带临界频率Fp1、Fp2,滤波器阻带临界频率Fst1、Fst2,最大衰减Rp,最小衰减Rs,幅频响应显示,相频响应显示,退出设计界面,手动运行,自动运行,(1)Digital
8、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、 Cheby
9、shev等)选项屏蔽 else set(handles.FilterDesign,enable,off); set(handles.Windows,enable,on) end,3、按钮实现编程,选择IIR屏蔽Windows选择,选择FIR屏蔽Filter Design选择,(2)Filter Type下拉菜单 function FilterType_Callback(hObject, eventdata, handles) %读取此时设计的滤波器的类型,“Lowpass、Highpass、Bandpass、Bandstop” FilterType_value=get(handles.Filt
10、erType,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或者
11、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,选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,选择带通或
12、者带阻滤波器时,显示相应的带通和带阻的第二个临界频率,(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 Custo
13、mOrderButton_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,(4)Fp1、Fp2、Fst1、Fst2文本编辑框 参数输入时,在输入抽样频率Fs的前提下,判断滤波器通带临界频率(Fp1、Fp2)、滤波器阻带临界频率(Fst1、Fst
14、2)的归一化频率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,归一化频率
15、不在【0,1】之间,请输入正确的参数,错误信息) end,(5)Run按钮 根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下: function Run_Callback(hObject, eventdata, handles) %点击Run立即运行AutoChoose,m文件,实现滤波器设计程序 AutoChoose(handles) (6)Auto Run按钮 当选择了Auto Run按钮时,能够根据所选的IIR的滤波器(Butterworth、Chebyshev等)、FIR的窗口选项、图形显示类型(Linear、Logarithmic)立即显示滤波器的幅频特性和相频特性图
16、,其中IIR的滤波器(Butterworth、 Chebyshev等)的回调函数程序如下: function FilterDesign_Callback(hObject, eventdata, handles) AutoRun_value=get(handles.AutoRun,Value); %当选择了Filter(Butterworth、 Chebyshev等)中一种Filter运行AutoChoose,m文件 if(AutoRun_value=1) AutoChoose(handles) end,(7)Quit按钮 退出滤波器设计窗口,其程序如下: function Quit_Callback(hObject, eventdata, han