基于MATLABGUI信号与系统虚拟实验平台使用Word文档格式.docx
- 文档编号:17580046
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:31
- 大小:1.14MB
基于MATLABGUI信号与系统虚拟实验平台使用Word文档格式.docx
《基于MATLABGUI信号与系统虚拟实验平台使用Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于MATLABGUI信号与系统虚拟实验平台使用Word文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
第二章MATLAB/GUI简介
2.1MATLAB概述
MATLAB取名源于MatrixLaboratory,意在于以矩阵方式处理数据,是国际上公认的优秀、可靠的科学计算和仿真标准软件。
许多最具影响力的学术刊物上都可以看到MATLAB的广泛应用。
MATLAB将数值计算和可视化环境集于一体,并提供很多函数,功能强大且直观简便,因而应用范围非常广泛。
研究设计单位和工业部门同样公认MATLAB的重要价值。
例如美国NationalInstruments公司的信号测量与分析软件LabVIEW、Cadence公司的信号和通信分析设计软件SPW以及TI公司的DSP等都和MATLAB有良好的接口。
一般认为MATLAB的典型应用包括:
(1)数值计算与分析;
(2)符号运算;
(3)建模与仿真;
(4)数据可视化;
(5)图形处理及可视化;
(6)基于图形用户界面的应用程序开发。
MATLAB由主包和数十个可选的工具箱组成。
主包带有功能丰富和完备的数字函数库,大量复杂的数学运算和分析都可以直接调用MATLAB函数求解。
工具箱为特定的学科和研究领域提供丰富的处理工具支持,与信号与系统相关的工具箱,包括信号处理工具箱(SignalProcessingToolbox)、通信工具箱(CommunicationToolbox)、控制系统工具箱(ControlSystemToolbox)等。
2.2图形用户界面GUI
图形用户界面(GraphicalUserInterface,GUI)是由按钮、列表框、编辑框等用户界面控件构成的应用程序界面。
在GUI下,用户无需记忆繁琐的命令,只需通过鼠标、键盘等即可与系统进行直观、便捷的交互。
用户通过一定的方法激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
MATLAB提供了功能强大的集成GUI开发环境(GraphicalUserInterfaceDevelopmentEnvironment,GUIDE),利用GUIDE用户可以方便地建立和设计GUI,并通过编程控制GUI和用户之间的交互操作。
图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。
计算机在屏幕显示图形和文本,若有扬声器还可产生声音。
用户通过输入设备,如:
键盘、鼠标、跟踪球、绘制板或麦克风,与计算机通讯。
用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。
通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。
图形用户界面或GUI是包含图形对象,如:
窗口、图标、菜单和文本的用户界面。
以某种方式选择或激活这些对象,通常引起动作或发生变化。
最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。
按下鼠标按钮,标志着对象的选择或其它动作。
创建GUI界面必须具备的三个基本元素:
组件、图形窗口和回应,使用GUIDE创建GUI。
GUIDE是一个组件工具集,能够生成用户所需的组件资源并保存在一个Fig文件中;
其次,GUIDE还可以生成一个包含GUI初始化和发布控制代码的M文件,该文件为回调函数(用户在图形界面中激活某一控件时要执行的函数)提供了一个框架。
GUIDE可以首先在布局GUI的同时生成以下两个文件:
①FIG文件:
该文件包括GUI图象的窗口和所有子对象(包括用户控件和坐标轴)的完全描述以及所有对象的属性值;
②M文件:
该文件包含用户用来发布和控制界面和回调函数的各种函数。
该文件中不包含任何组件的布置信息。
设计中用到的控件有:
按钮、文本框、坐标轴、下拉列表、滚动条等。
所设计的GUI界面主要包括实验平台进入界面、实验名称界面、每一个实验项目界面及其对应的仿真实例、参考资料学习子界面等。
第三章虚拟实验平台设计
3.1系统方案设计
本系统根据要实现的实验类别、个数的要求来规划模块,在设计的时候本着界面美观、简洁的原则。
各个模块可以相互切换,每个实验时可以完成参数的传递。
本实验系统整体结构设计由两部分组成:
界面模块设计和菜单模块设计。
其中,界面模块总共包括七个模块:
开始引导模块、简单函数的性质、信号抽样、信号频谱分析、LTI系统特性、滤波器设计和说明模块。
一个实验界面模块下面又有下一级实验界面模块,如滤波器设计模块下面还有模拟滤波器设计模块和数字滤波器设计模块,各实验模块中还包含了说明模块。
在菜单设计时,在实验子界面中除使用系统约定的菜单条外,还增加了几个控制背景和退出实验的菜单。
系统的整体结构如图3.1所示。
图3.1系统的整体结构
设计的具体步骤如下:
(1)运用MATLAB的图形用户界面(GUI)设计方法,设计整个实验系统的开始引导界面、实验主界面、实现信号与系统课程中具体实验的各个子界面、设计系统的说明界面及其各个实验的说明界面。
(2)分别编写各个子界面的各个控件对象的回调函数,来实现控件相应控制功能,达到直接通过界面上各个控件就可以控制数据的输入输出,并可以方便地对实验结果的数据及其图形进行读取和分析的目的。
(3)编写主界面的回调函数,将各个实验子界面整合在信号与系统虚拟实验平台的主界面中,即通过主界面就可以进入任何一个实验子界面进行实验。
(4)编写开始引导界面的回调函数,实现从引导界面直接进入主界面。
3.2系统主界面设计
启动MATLABR2010b,在命令窗口输入guide,打开GUI制作窗口,在窗体上有界面制作工具。
系统欢迎界面共使用了五个静态文本框(StaticText)和两个按钮(PushButton),进入GUI设计界面将所需的控件放置在适当位置后,双击控件就会出现控件的属性修改对话框(Inspector),根据需要修改相关信息(字体颜色、字体大小、控制内容、背景色等),点击GUI界面上工具栏中的按钮“
”就可以运行设计的GUI界面,MATLAB系统会自动生成相应的M文件,即源程序文件,运行程序后得到结果如图3.2所示。
在M文件中创建好链接后,点击“进入实验”按钮可以进入到实验仿真平台,点击“退出”就可退出本实验系统。
图3.2系统主界面
点击“进入实验”按钮后就可以进入该实验平台的引导界面了,本界面是由一个静态文本框(StaticText)、一个列表框(Listbox)和三个按钮(PushButton)组成,如图3.3所示。
图3.3系统引导界面
图3.3中可以看出这个系统的主要模块,简洁明了,且通过帮助可以初步了解该虚拟系统。
在主界面上选择任何一个实验都可以切换到它的子界面。
3.3简单函数性质模块
3.3.1简单函数性质模块主界面
简单函数性质模块主界面如图3.4所示。
图3.4简单函数性质模块界面
由图3.4可以看出在这个模块里包括进入实验、帮助和返回上层三个选择按钮。
点击“进入实验”按钮可以进到几个简单函数(正弦波、方波、锯齿波、阶跃函数、脉冲函数)的相加、移位和序列的拆分界面,如图3.5所示。
帮助模块主要介绍有关函数的性质简介。
点击“返回上层”可以回到系统的引导界面,从而选择自己想要仿真的实验。
3.3.2简单函数性质仿真界面
该模块包括了正弦波、方波、锯齿波、阶跃函数和脉冲函数五个简单函数。
此实验可以实现两个信号的相加,单个信号的移位和序列的奇偶量的拆分,并且生成相应的波形,显示在图片框中。
在pushbutton下单击右键callback,打开callbackfunction,调用MATLAB内部提供的函数,square函数,sawtooth函数,sin函数。
在GUI制作窗口,axes是用来显示图形,当单击pushbutton运行结果,会在axes中显示出来。
通过人机交互方式进行设计,在信号1和信号2中输入幅值,频率,初相,移位不同的值,对其信号相加,信号相乘,信号移位使信号在axes窗口中,显示出来。
仿真的波形有正弦波,三角波,指数函数,抽样函数,脉冲函数等。
Popupmenu函数中用switchval1case来调用不同的波形,设置句柄get(handles.popupmenu)。
用strdouble(get(handles.edit,’string’)来输入测试数据,达到直观仿真模拟图。
图3.5简单函数性质实验仿真界面
3.3.3简单函数波形程序
实验中正弦波、方波、锯齿波、阶跃函数和脉冲函数实现的主要程序为:
a1=str2double(get(handles.edit1,'
String'
));
f1=str2double(get(handles.edit2,'
s1=str2double(get(handles.edit3,'
a2=str2double(get(handles.edit5,'
f2=str2double(get(handles.edit6,'
s2=str2double(get(handles.edit7,'
val1=get(handles.popupmenu4,'
Value'
);
switchval1
case1
t=0:
0.01*pi:
6*pi;
y1=a1*sin(f1*t+s1);
case2
y1=a1*square(f1*t+s1);
case3
y1=a1*sawtooth(f1*t+s1);
case4
t=[-10:
0.01:
10];
y1=a1*[(t-s1)>
=0];
case5
y1=a1*[(t-s1)==0];
end
正弦波、方波、锯齿波波形的产生都是调用MATLAB软件中的波形产生函数,sin为正弦波函数、square为方波函数、sawtooth为锯齿波函数。
通过popupmenu下拉可以选择生成不同的波形,波形的显示程序为:
axes(handles.axes1)
plot(t,y1,'
r'
)
set(handles.axes1,'
XMinorTick'
'
on'
gridon
3.3.4信号运算程序代码
(1)信号的相加。
信号的相加是指在同一时刻信号取值的相加,MATLAB对于时间信号的相加是基于向量的点运算。
(2)信号的移位。
信号的移位是将信号某一时刻的值左移或右移一定的时间从而产生一个新的波形。
(3)信号的拆分。
任何一个函数都可以分解为一个偶函数分量和一个奇函数分量之和的形式,即
f(t)=fe(t)+fo(t)(3-1)
其中,
fe(t)=(f(t)+f(-t))/2(3-2)
fo(t)=(f(t)-f(-t))/2(3-3)
从波形角度看,求信号的偶分量和积分量时,首先是将原信号进行反折,然后与原信号相加、减,再除以2,就得到信号的奇分量和偶分量。
实现该功能的程序为:
f1=fliplr(y1);
fe1=(y1+f1)/2;
fo1=(y1-f1)/2;
axes(handles.axes3)
plot(t,fe1,'
-r'
t,fo1,'
-g'
set(handles.axes3,'
其中,fliplr(x)函数是对信号x进行反折。
本程序是将信号的偶分量用红色线,奇分量用绿色线显示在axes3中。
3.4信号抽样模块
信号抽样实验同简单函数性质实验基本组成相同,都是由实验仿真界面和帮助界面组成。
其主页面如图3.6所示。
图3.6信号抽样实验主页面
点击“进入仿真”按钮可连接到信号抽样的仿真界面,如图3.7所示;
点击“帮助”按钮则链接到帮助模块,它主要是对信号抽样的简要介绍,该界面只要对插入的静态文本框进行编辑,输入相关文字即可;
点击“返回上层”按钮可链接到系统的引导面,重新选择自己所想仿真的实验。
图3.7信号抽样仿真界面
本实验中包括升余弦脉冲信号、正弦波、方波和锯齿波四种信号的抽样,进入仿真后可显示信号原本波形和抽样后的波形,该模块主要程序代码为:
a1=str2double(get(handles.edit4,'
f1=str2double(get(handles.edit5,'
Ts=str2double(get(handles.edit6,'
t=-4:
0.1:
4;
t1=-4:
Ts:
axes(handles.axes1)
val1=get(handles.popupmenu2,'
y1=(1+cos(t))/2;
y1=a1*sin(f1*t);
y1=a1*square(f1*t);
y1=a1*sawtooth(f1*t);
plot(t,y1)
axes(handles.axes2)
fst=(1+cos(t1))/2;
fst=a1*sin(f1*t1);
fst=a1*square(f1*t1);
fst=a1*sawtooth(f1*t1);
:
'
),holdon
stem(t1,fst)
set(handles.axes2,'
其中,Ts为抽样间隔,我们可以自行选择,a1、f1为信号的幅度和频率。
3.5信号频谱分析模块
信号频谱分析实验主界面如图3.8所示。
图3.8信号频谱分析实验主界面
由图3.8可知该实验分为模拟信号和数字信号的频谱分析,点击相应的按钮可以进入对应的仿真界面,分别如图3.9和图3.10所示。
图3.9模拟信号的频谱分析界面
图3.10数字信号频谱分析界面
频谱分析的实现主要是调用了MATLAB中的fft函数(求信号的傅里叶变换)对信号进行处理从而得到信号的频谱图。
模拟信号频谱信号生成程序:
y=fft(y2,N);
mag=abs(y);
fs=(0:
length(y)-1)'
*fm/length(y);
axes(handles.axes2)%Selecttheproperaxes
plot(fs,mag,'
-b'
axis([01000300]);
title('
频域波形'
数字信号频谱生成程序为:
y=fft(y1,N);
axes(handles.axes2)
stem(x,mag,'
3.6LTI系统时域分析模块
LTI系统分析主页面设计如图3.11所示。
图3.11LTI系统分析主界面
由图可知,对线性时不变系统(LTI系统)时域分析分为连续信号和离散信号两种。
3.6.1连续时间LTI系统
在连续时间LTI系统中,冲击响应和阶跃响应是系统特性的描述,对它们的分析是线性系统中极为重要的问题。
输入为单位冲击函数所引起的零状态响应称为单位冲击响应,简称冲击响应,用h(t)表示;
输入为单位阶跃函数所引起的零状态响应称为单位阶跃响应,简称阶跃响应,用g(t)表示。
在MATLAB中,对于连续LTI系统的冲击响应和阶跃响应的数值解,可分别用控制系统工具箱提供的函数impulse和step来求解。
其语句格式分别为
y=impulse(sys,t)
y=step(sys,t)
其中,t表示计算系统响应的时间抽样点向量,sys表示LTI系统模型。
连续信号LTI系统分析时域仿真界面如图3.12所示。
图3.12连续LTI系统时域分析界面
该仿真系统适用于输入信号最高为二阶,输出信号最高为一阶的LTI系统。
相关程序为:
functionpushbutton1_Callback(hObject,eventdata,handles)
a2=str2double(get(handles.edit2,'
a3=str2double(get(handles.edit3,'
b1=str2double(get(handles.edit4,'
b2=str2double(get(handles.edit5,'
t=0:
0.001:
sys=tf([b1,b2],[a1,a2,a3]);
h=impulse(sys,t);
g=step(sys,t);
axes(handles.axes1)%Selecttheproperaxes
plot(t,h,'
冲击响应'
plot(t,g,'
b'
阶跃响应'
3.6.2离散时间LTI系统
系统的单位取样响应定义为系统在冲击函数激励下系统的零状态响应,用h(t)表示。
MATLAB求解单位取样响应可利用函数filter,还可以利用控制系统工具箱提供的函数impz来实现。
impz函数常用语句格式为
impz(b,a,N)
其中,参数N通常为正整数,代表计算单位取样响应的样值个数。
离散信号LTI系统分析时域仿真界面如图3.13所示。
图3.13离散LTI系统时域分析界面
该仿真系统适用于输入信号最高为二阶,输出信号最高为一阶的离散LTI系统,点击“单位取样响应”按钮就可得到你设计系统的取样函数。
本系统调用的是MATLAB控制系统工具箱中的impz函数相关程序为:
a=[a1a2a3];
b=[b1b2];
n=0:
30;
impz(b,a,30)
系统单位取样响应'
3.7滤波器设计模块
滤波器是数字信号处理的重要基础,是使用最为广泛的种线性系统。
描述滤波器的结构只需要三种基本元件:
加法器,乘法器,延迟元件。
模拟滤波器的设计是其他滤波器设计的基础,模拟低通滤波器的设计,主要包括巴特沃斯滤波器,切比雪夫滤波器和椭圆滤波器。
数字滤波器是数字信号处理的重要基础,是使用最为广泛的一种线性系统。
是完成信号滤波处理功能的,用有限精度算法实现的离散时间线性非时变系统。
其输入是一组模拟信号取样的数字量,其输出是另一组数字量。
在此系统中我设计了模拟滤波器和数字滤波器的生成界面。
滤波器设计模块的主界面如图3.14所示。
图3.14滤波器设计主界面
从图3.14可以看出,这个模
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLABGUI 信号 系统 虚拟 实验 平台 使用
![提示](https://static.bdocx.com/images/bang_tan.gif)