第三章 基于MATLAB的仿真设计
研究与设计,同业间也成立了若干机构,以互相交流 GUI 设计理论与经验为目的。随着中国 IT 产业,移动通讯产业,家电产业的迅猛发展,在产品的人机交互界面设计水平发展上日显滞后,这对于提高产业综合素质,提升与国际同等业者的竞争能力等等方面无疑起了制约的作用。
3.1.1 GUI的特点
GUI的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
3.1.2 GUI界面的组成
GUI界面由桌面、视窗、单一文件界面、多文件界面、标签、菜单、图标、按钮组成
界面:在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。
视窗:应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。
单一文件界面:在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。
多文件界面:在一个窗口之内进行多个数据管理的方式。这种情况下,窗
口的管理简单化,但是操作变为双重管理。
标签:多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。
菜单:将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。
图标:显示在管理数据的应用程序中的数据,或者显示应用程序本身。 按钮:菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。
3.2差分滤波器的仿真设计
在MATLAB中打开GUIDE新建GUI界面,创建如图3—1所示界面。
图3—1 GUI仿真界面
第三章 基于MATLAB的仿真设计
用MATLAB设计的M文件如下:
t1=(0:1/f1/N:0.04);%定义时间范围0到0.04,步长为基波周期/N m=size(t1);%模拟输入参数
Va=A*sin(2*pi*f1*t1+B); %基波电压
Val=Z+A*sin(2*pi*f1*t1+B)+30*sin(2*N/k*pi*f1*t1); %叠加直流分量和需要滤除的谐波分量 for jj=k+1:m(2)
Y(jj)=(Val(jj)-Val(jj-k))/2*sin(pi*k/N); %采用差分滤波器滤除谐波 end
plot(t1,Va,'-ro',t1,Val,'-bs',t1,Y,'-g*',t1,Z,'-k+'); xlabel('t/s');ylabel('y(t)'); grid on %输出波形
运行这个M文件,可以得到此滤波器的滤波效果仿真波形如图3—2所示。
图3—2 滤波效果仿真波形
图中,带圆圈红色标记为基波Va,带方框蓝色标记的为叠加直流和所想滤
除谐波分量Va1,带星号绿色标记的为经过滤波后的输出波形。显然已经滤除了直流和高次谐波。
当然程序设计的是人机界面GUI,即可以通过改变界面中的数值来滤除其他次谐波。
用MATLAB设计M文件如下:
f=linspace(0,6*pi,500);%从0到6*pi,均匀产生500个数据,赋值给t b1=sin(f*pi*k/N);%产生正弦波 H1=abs(b1);%输出正弦波为正值 plot(f,H1)
xlabel('f/f1');ylabel('H1'); grid on %输出波形
运行这个M程序单击,可以得到滤波器的幅频特性如图3—3所示。
图3—3 滤波器的幅频特性
同样改变界面中的采样频率和步长,可以达到相应的波形图。
3.3 加法滤波器的仿真设计
第三章 基于MATLAB的仿真设计
用MATLAB设计的M文件如下: t1=(0:1/f1/N:0.04); m=size(t1);
Va=A*cos(2*pi*f1*t1+B);
Val=Z+Va+V2+V3+V4+V5+V6+V7+V8+V9; m=size(t1); for jj=K+1:m(2)
Y(jj)=(Val(jj)+Val(jj-K))/abs(2*cos(pi*K/N)); end
plot(t1,Va,'-ro',t1,Val,'-bs',t1,V2,'-k.',t1,V3,'-k.',t1,V4,'b:*',t1,V5,'r:*',t1,V6,'g:*',t1,V7,'b:*',t1,V8,'k:*',t1,V9,'c:*',t1,Y,'-g*',t1,Z,'-m+');
xlabel('t/s');ylabel('y(t)'); grid on
运行这个M文件,可以得到此滤波器的滤波效果仿真波形如图3-5所示。 图3-5所示为当基波信号频率为50Hz,基波频率幅值为200,直流幅值为0,基波相角为0度,采样频率为24,采样步长为4,根据计算可得出这种情况下课滤除三的奇次倍谐波,图示为加入3次和9次谐波而滤波器验证可以滤除。