桂林电子科技大学实训(论文)说明书用纸
左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。GUI设计面板是GUI设计工具应用的平面,面板上部提供了菜单和常用工具按钮,左边提供了多种如命令按钮、单选按钮、可编辑文本框、静态文本框、弹出式菜单等。
5.1“滤波器设计软件”设计的GUI界面设计
图5.1.1 MATLAB GUI设计界面
图5.1.2滤波器GUI界面设计
9
桂林电子科技大学实训(论文)说明书用纸
5.2控件实现编程
(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
(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按钮
10
桂林电子科技大学实训(论文)说明书用纸
%选择使用最小阶数设置时,屏蔽自定义阶数的输
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
(Fp2、Fst1、Fst2同理编程) (5)Run按钮
根据输入的参数显示设计的滤波器的幅频特性和相频特性图,其程序如下: function Run_Callback(hObject,eventdata,handles)
11
桂林电子科技大学实训(论文)说明书用纸
%点击Run立即运行AutoChoose,m文件,实现滤波器设计程序 AutoChoose(handles) (6)Quit按钮
退出滤波器设计窗口,其程序如下:
function Quit_Callback(hObject,eventdata,handles) %点击Quti按钮退出 Close
5.3运行和结果显示
在图形界面下,按“运行”,在Fiter Design界面,选择要设计的滤波器选项,编辑框中输人要求设计的数字滤波器的性能指标,选择“Run”命令按钮,出现如图5.3.1所示的模拟低通原型滤波器幅频响应和相频响应曲线,最小阶数。 例如选择设计IIR的Butterworth低通滤波器,其Fs=1000Hz,Fp1=100Hz,Fs1=300Hz,Rp=3dB,Rs=20dB,n=4。
图5.3.1滤波器运行结果显示
6 总结
12

