基于MATLAB GUI的“滤波器设计软件”设计2

上传人:ra****d 文档编号:243094214 上传时间:2024-09-15 格式:PPT 页数:20 大小:727KB
返回 下载 相关 举报
基于MATLAB GUI的“滤波器设计软件”设计2_第1页
第1页 / 共20页
基于MATLAB GUI的“滤波器设计软件”设计2_第2页
第2页 / 共20页
基于MATLAB GUI的“滤波器设计软件”设计2_第3页
第3页 / 共20页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,“滤波器设计软件”设计,基于MATLAB GUI设计滤波器软件设计,一 MATALB GUI介绍,MATALB 可以创建图形用户界面GUI ( GraphicalUser Interface) ,它是用户和计算机之间交流的工具。MATLAB 将所有GUl 支持的用户控件都集成在这个环境中并提供界面外观、属性和行为响应方式的设置方法,随着版本的提高,这种能力还会不断加强。而且具有强大的绘图功能,可以轻松的获得更高质量的曲线图。,1、IIR滤波器设计原理,滤波器的设计质上是寻找一个既能物理实现,又能满足给定频率特性指标要求的系统传输函数。IIR滤波器一般采用递归型的结构,系统的输入与输出服从,N,阶差分方程:,相应的传输函数为,:,二、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 /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); %生成频率响应参数,软件效果显示,三、FIR滤波器设计原理,1、FIR滤波器设计原理,寻找一个FIR滤波器,使其频率响应H(ej,)逼近理想FIR滤波器的频率响应Hd(ej).,w,(,n,):窗函数序列,要选择合适的形状和长度,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;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提供了编写图形用户界面的功能。所谓图形用户界面, 简称为GUI,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等,Filter Disign,IIR滤波器,FIR滤波器,Boxcar,Bartlett,Blackman,Hanning,Hamming,Kaiser,Butterworth,Chebyshev,Chebyshev,Ellipse,选择IIR或者FIRFilter设计,Butterworth等Filter选择,窗口选择,1、滤波器设计总框图,2、“滤波器设计软件”设计的GUI界面设计,MATLAB GUI设计界面,“滤波器设计软件” GUI界面设计,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,幅频响应显示,相频响应显示,退出设计界面,手动运行,自动运行,(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选择,(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,选择低通或者高通滤波器时,隐藏相应的带通和带阻的第二个临界频率,选择带通或者带阻滤波器时,显示相应的带通和带阻的第二个临界频率,(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,(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,(5)Run按钮,根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下:,function Run_Callback(hObject, eventdata, handles),%点击Run立即运行AutoChoose,m文件,实现滤波器设计程序,AutoChoose(handles),(6)Auto Run按钮,当选择了Auto Run按钮时,能够根据所选的IIR的滤波器(Butterworth、Chebyshev等)、FIR的窗口选项、图形显示类型(Linear、Logarithmic)立即显示滤波器的幅频特性和相频特性图,其中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, handles),%点击Quti按钮退出,Close,4、运行和结果显示,在图形界面下, 按“ 运行” , 在Fiter Design界面,选择要设计的滤波器选项,编辑框中输人要求设计的数字滤波器的性能指标, 选择“Run”命令按钮, 出现如图所示的模拟低通原型滤波器幅频响应和相频响应曲线, 最小阶次。,当选择了“Auto Run”按钮,在“滤波器类型选择”旁的下拉菜单框中选择其他类型的滤波器会立刻出现此类型的滤波器的图形。,例如选择设计IIR的Butterworth低通滤波器,其Fs=1000Hz,Fp1=100Hz,,Fs1=300Hz,Rp=3dB,Rs=20dB,n=4,THE END,Thanks,!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 商业计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!