该界面的主要控制程序为:
function pushbutton1_Callback(hObject, eventdata, handles) Rs = str2double(get(handles.edit1,'String')); Rp = str2double(get(handles.edit2,'String')); w1 = str2double(get(handles.edit3,'String')); w2 = str2double(get(handles.edit4,'String')); wp = w1*pi; ws = w2*pi;
axes(handles.axes1)% Select the proper axes val = get(handles.popupmenu1,'Value'); switch val
case 1
%Compute Oder and Cutoff frequency [N,Wn] = buttord(wp,ws,Rp,Rs,'s'); N
Fc = Wn/(2*pi)
[b,a] = butter(N,Wn,'s');
w = linspace(1,3000,1000)*2*pi; H = freqs(b,a,w); magH = abs(H);
phaH = unwrap(angle(H));
plot(w/(2*pi),20*log10(magH)); xlabel('Frequency(Hz)'); ylabel('Magnidute(dB)'); title('巴特沃斯低通滤波器') grid on case 2
%Chebyshev analog lowpass filter prototype [N,Wn] = cheb1ord(wp,ws,Rp,Rs,'s'); N
[b,a] = cheby1(N,Rp,Wn,'s'); w = linspace(1,3000,1000)*2*pi; H = freqs(b,a,w); magH = abs(H);
phaH = unwrap(angle(H));
plot(w/(2*pi),20*log10(magH)); xlabel('Frequency(Hz)'); ylabel('Magnidute(dB)');
20
title('切比雪夫I型低通滤波器')
grid on case 3
%Chebyshev analog lowpass filter prototype [N,Wn] = cheb2ord(wp,ws,Rp,Rs,'s'); N
[b,a] = cheby2(N,Rp,Wn,'s'); w = linspace(1,3000,1000)*2*pi; H = freqs(b,a,w); magH = abs(H);
phaH = unwrap(angle(H));
plot(w/(2*pi),20*log10(magH)); xlabel('Frequency(Hz)'); ylabel('Magnidute(dB)');
title('切比雪夫II型低通滤波器') grid on case 4
%Compute Oder and Cutoff frequency [N,Wn] = ellipord(wp,ws,Rp,Rs,'s'); N
[b,a] = ellip(N,Rp,Rs,Wn,'high','s'); w = linspace(1,3000,1000)*2*pi; H = freqs(b,a,w); magH = abs(H);
phaH = unwrap(angle(H));
plot(w/(2*pi),20*log10(magH)); xlabel('Frequency(Hz)'); ylabel('Magnidute(dB)'); title('椭圆高通滤波器') grid on end
程序中调用了MATLAB系统控制工具箱中的buttord函数、cheb1ord函数、cheb2ord函数和ellipord函数,分别对应巴特沃斯滤波器、切比雪夫I型、切比雪夫II型和椭圆滤波器的窗函数。
同理,数字滤波器的设计内容与模拟滤波器类似,它是利用双线性法、频率不变法等方法将模拟滤波器转换成相应的数字滤波器。其仿真界面如图3.16所示。
21
图3.16 数字滤波器界面
3.8 生成可执行文件
本系统要求最终结果要脱离开发工具(MATLAB)软件独立运行,我在做GUI的时候主要参考了别人生成可执行文件的方法。
首先在MATLAB命令行窗口中输入guide,打开GUI设计的图形界面。然后拖入所要的图形控件,按需要修改外观直至满足要求。点击guide界面上方的Run按钮,会生成一个fig文件,一个m文件,其中fig文件是你界面的图形,m文件是你界面的回调函数,在m文件里每个控件的回调函数都已经自动生成,把我们自己的m代码填在相应的回调函数里即可。
3.9 小结
本章讨论了软件平台的整体设计,给出了系统整体框图和各模块的界面和设计方法,详细介绍了各个模块产生波形的原理,并分析了最后生成可执行文件的方法。
22
第四章 虚拟实验平台的使用
4.1 简述
通过几周的努力和王老师的指导,我终于完成了信号与系统虚拟实验平台的设计。本系统主要是使用MATLAB 软件的GUI界面将《信号与系统》课程中所涉及到的实验设计成可视化的人机界面,让学生在做实验时解决了实验设备欠缺、实验系统难以实现和实验原理难懂等问题,提高了学生的积极性,且将学生从晦涩难懂的理论知识中解放出来,更好的掌握《信号与系统》这门课程。下面简单介绍一下它的使用。
4.2 主界面
启动MATLAB R2010b,将其路径改为该实验平台程序所放置的文件夹,然后打开main.m文件,点击运行即可进入实验平台,如图4.1所示。
图 4.1 系统主界面
点击“退出”按钮即可退出虚拟实验界面,点击“进入实验”可进入到系统的引导界面,如图4.2所示。
23
图4.2 系统引导界面
在这里点击“帮助”可以读到有关该实验平台的简要介绍,“返回”按钮让我们回到主界面。选择自己想要仿真的实验,点击“进入实验”即可进入到对应的实验系统。
4.3 简单函数性质
在引导界面选择实验1并点击“进入实验”按钮即可进入实验1简单函数性质主界面,主界面有关于简单函数性质的简介;点击“帮助”按钮可以可以进入到实验1的说明模块,如图4.3所示,该界面仅由两个文本框和一个按钮组成,点击“返回”可以回到实验1的主界面;点击”进入仿真“按钮可以进入到仿真界面,如图4.4所示。
24