基于MATLABGUI信号与系统虚拟实验平台使用.docx

上传人:b****7 文档编号:16747840 上传时间:2023-07-17 格式:DOCX 页数:38 大小:1.14MB
下载 相关 举报
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第1页
第1页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第2页
第2页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第3页
第3页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第4页
第4页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第5页
第5页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第6页
第6页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第7页
第7页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第8页
第8页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第9页
第9页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第10页
第10页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第11页
第11页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第12页
第12页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第13页
第13页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第14页
第14页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第15页
第15页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第16页
第16页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第17页
第17页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第18页
第18页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第19页
第19页 / 共38页
基于MATLABGUI信号与系统虚拟实验平台使用.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于MATLABGUI信号与系统虚拟实验平台使用.docx

《基于MATLABGUI信号与系统虚拟实验平台使用.docx》由会员分享,可在线阅读,更多相关《基于MATLABGUI信号与系统虚拟实验平台使用.docx(38页珍藏版)》请在冰点文库上搜索。

基于MATLABGUI信号与系统虚拟实验平台使用.docx

基于MATLABGUI信号与系统虚拟实验平台使用

目录

第一章绪论1

1.1概述1

1.2研究意义1

1.3本文的主要工作2

第二章MATLAB/GUI简介3

2.1MATLAB概述3

2.2图形用户界面GUI3

第三章虚拟实验平台设计5

3.1系统方案设计5

3.2系统主界面设计6

3.3简单函数性质模块7

3.3.1简单函数性质模块主界面7

3.3.2简单函数性质仿真界面8

3.3.3简单函数波形程序9

3.3.4信号运算程序代码10

3.4信号抽样模块11

3.5信号频谱分析模块13

3.6LTI系统时域分析模块15

3.6.1连续时间LTI系统16

3.6.2离散时间LTI系统17

3.7滤波器设计模块18

3.8生成可执行文件22

3.9小结22

第四章虚拟实验平台的使用23

4.1简述23

4.2主界面23

4.3简单函数性质24

4.3信号抽样26

4.4信号频谱分析27

4.5LTI系统时域分析28

4.6滤波器设计29

第五章小结31

5.1系统设计成果31

5.2系统设计不足31

参考文献32

致谢33

第一章绪论

1.1概述

通信在现今生活中已是普遍存在,在经济发展,政治军事活动,个人生活中的应用已是相当普遍,是社会发展不可缺少的工具,自1844年莫而斯在华盛顿和巴尔的摩之间发送世界第一份电报以来,通信已经经历了150多年,发展到目前数字通信趋于替代模拟通信的趋势。

《信号与系统》课程,是高等理工科类院校通信与电子信息工程等专业中一门十分重要的基础理论课,也是电子信息工程专业许多后续课程的重要理论基础。

以前的信号模拟是通过硬件,对仪器和实验室的要求较高,不便于广泛应用,而且信号处理具有内容繁多、概念抽象、设计复杂等特点,学生在学习时常常会感到枯燥,难以理解和掌握。

本虚拟实验系统具有可视化的特点,操作方便、直观。

通过GUI界面,学生可以进入教师指定的实验项目,进入相应的环境,设置和调整仿真参数,进行仿真试验;或者任意进入感兴趣的实验项目,打开参考资料及问题解答,进行自学。

同时,仿真实验平台还提供了对应实验项目的仿真实例,学生可以通过仿真实验结果进行比较分析,自觉发现实验中存在的问题,锻炼独立思考问题、分析问题的能力。

1.2研究意义

MATLAB作为编程语言和可视化工具,用MATLAB开发的实验为学生提供了“信号分析”、“信号抽样”、“系统仿真”、“系统特性”及“滤波器设计”等实验模块。

它的界面演示框如同通用示波器,显示了信号分析与系统设计的动态仿真过程,给人以直观的感受。

在教学中它能为同学们提供了大量的实例,同时它也为同学们留下了深刻的印象,在实验中同学们可以改变信号、模块、仿真子系统等的参数,并观察信号与系统的相应变化。

在实验过程中,同学们对所学的书本知识会有感性的认识和直观的验证,加深对“信号与系统”原理的理解。

本课题能避开硬件系统的不足,巧妙的运用软件来仿真硬件才能实现的实验结果,大大降低了实验设备要求,节约了人力和财力,而且有很多的库函数可以在实验时直接调用,避免了用硬件做实验的局限性。

可以更方便的做信号系统实验,为教学和研究提供了方便。

还能够锻炼一个人在面对一个具体的项目时,遇到问题,分析问题,解决问题的能力;获得独立策划、实施课题,并按照既定计划进行开发的经验,以及查找相关文献的能力。

通过自己的努力使得对于MATLAB有一个全面的、深刻的认识,并且对MATLAB做界面的软件有了一定的了解,对系统规划有了初步的认识。

为以后研发工作打下坚实的基础,积累宝贵的经验。

1.3本文的主要工作

本文主要是针对以MATLAB为软件平台的信号系统虚拟实验平台的设计,用MATLAB语言编程开发一个适合小型的信号系统实验平台,方便学生学习。

具体的工作主要有:

(1)信号与系统虚拟实验平台系统分析;

(2)有关MATLAB软件简介、分析;

(3)有关信号与系统实验平台的设计;

(4)介绍信号与系统实验平台的使用;

(5)系统测试、分析、总结。

 

第二章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,'String'));

s1=str2double(get(handles.edit3,'String'));

a2=str2double(get(handles.edit5,'String'));

f2=str2double(get(handles.edit6,'String'));

s2=str2double(get(handles.edit7,'String'));

val1=get(handles.popupmenu4,'Value');

switchval1

case1

t=0:

0.01*pi:

6*pi;

y1=a1*sin(f1*t+s1);

case2

t=0:

0.01*pi:

6*pi;

y1=a1*square(f1*t+s1);

case3

t=0:

0.01*pi:

6*pi;

y1=a1*sawtooth(f1*t+s1);

case4

t=[-10:

0.01:

10];

y1=a1*[(t-s1)>=0];

case5

t=[-10:

0.01:

10];

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,'XMinorTick','on')

gridon

其中,fliplr(x)函数是对信号x进行反折。

本程序是将信号的偶分量用红色线,奇分量用绿色线显示在axes3中。

3.4信号抽样模块

信号抽样实验同简单函数性质实验基本组成相同,都是由实验仿真界面和帮助界面组成。

其主页面如图3.6所示。

图3.6信号抽样实验主页面

点击“进入仿真”按钮可连接到信号抽样的仿真界面,如图3.7所示;点击“帮助”按钮则链接到帮助模块,它主要是对信号抽样的简要介绍,该界面只要对插入的静态文本框进行编辑,输入相关文字即可;点击“返回上层”按钮可链接到系统的引导面,重新选择自己所想仿真的实验。

图3.7信号抽样仿真界面

本实验中包括升余弦脉冲信号、正弦波、方波和锯齿波四种信号的抽样,进入仿真后可显示信号原本波形和抽样后的波形,该模块主要程序代码为:

a1=str2double(get(handles.edit4,'String'));

f1=str2double(get(handles.edit5,'String'));

Ts=str2double(get(handles.edit6,'String'));

t=-4:

0.1:

4;

t1=-4:

Ts:

4;

axes(handles.axes1)

val1=get(handles.popupmenu2,'Value');

switchval1

case1

y1=(1+cos(t))/2;

case2

y1=a1*sin(f1*t);

case3

y1=a1*square(f1*t);

case4

y1=a1*sawtooth(f1*t);

end

plot(t,y1)

set(handles.axes1,'XMinorTick','on')

gridon

axes(handles.axes2)

val1=get(handles.popupmenu2,'Value');

switchval1

case1

fst=(1+cos(t1))/2;

case2

fst=a1*sin(f1*t1);

case3

fst=a1*square(f1*t1);

case4

fst=a1*sawtooth(f1*t1);

end

plot(t,y1,':

'),holdon

stem(t1,fst)

set(handles.axes2,'XMinorTick','on')

gridon

其中,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]);

set(handles.axes2,'XMinorTick','on')

title('频域波形');

gridon

数字信号频谱生成程序为:

y=fft(y1,N);

mag=abs(y);

axes(handles.axes2)

stem(x,mag,'-b')

set(handles.axes2,'XMinorTick','on')

title('频域波形');

gridon

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)

a1=str2double(get(handles.edit1,'String'));

a2=str2double(get(handles.edit2,'String'));

a3=str2double(get(handles.edit3,'String'));

b1=str2double(get(handles.edit4,'String'));

b2=str2double(get(handles.edit5,'String'));

t=0:

0.001:

4;

sys=tf([b1,b2],[a1,a2,a3]);

h=impulse(sys,t);

g=step(sys,t);

axes(handles.axes1)%Selecttheproperaxes

plot(t,h,'r')

title('冲击响应')

set(handles.axes1,'XMinorTick','on')

gridon

axes(handles.axes2)%Selecttheproperaxes

plot(t,g,'b')

title('阶跃响应')

set(handles.axes2,'XMinorTick','on')

gridon

3.6.2离散时间LTI系统

系统的单位取样响应定义为系统在冲击函数激励下系统的零状态响应,用h(t)表示。

MATLAB求解单位取样响应可利用函数filter,还可以利用控制系统工具箱提供的函数impz来实现。

impz函数常用语句格式为

impz(b,a,N)

其中,参数N通常为正整数,代表计算单位取样响应的样值个数。

离散信号LTI系统分析时域仿真界面如图3.13所示。

图3.13离散LTI系统时域分析界面

该仿真系统适用于输入信号最高为二阶,输出信号最高为一阶的离散LTI系统,点击“单位取样响应”按钮就可得到你设计系统的取样函数。

本系统调用的是MATLAB控制系统工具箱中的impz函数相关程序为:

functionpushbutton1_Callback(hObject,eventdata,handles)

a1=str2double(get(handles.edit1,'String'));

a2=str2double(get(handles.edit2,'String'));

a3=str2double(get(handles.edit3,'String'));

b1=st

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2