




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录基于MATLAB的信号与系统实验平台的设计与实现毕业论文第1章 绪论11.1 概述11.2 基于Matlab的信号与系统实验平台的研究现状11.3 研究意义21.4 本文的主要工作21.5 小结3第2章 开发平台的介绍42.1 Matlab语言的简介42.2 Matlab的开发环境52.2.1Matlab7.052.2.2 图形界面用户(GUI)52.3 小结6第3章 GUI的建立73.1 GUI界面基本操作73.2 回调函数73.3 GUI的M文件83.4 控件的介绍83.4.1触控按钮(Push Button)83.4.2坐标轴(Axes)93.4.3静态文本(Static Text)103.4.4弹起式菜单(Pop-up Menu)113.4.5可编辑文本(Edit Text)123.5 小结13第4章 系统软件平台设计144.1引言144.2系统整体框图144.3系统设计步骤144.4系统模块154.4.1模块划分简介154.4.2模块具体设计154.5生成可执行文件284.6小结29第5章 系统测试305.1引言305.2测试概要305.2.1测试结果305.2.2测试分析405.3小结40总结41致谢43参考文献44计算机信息工程学院毕业设计说明书第1章 绪论1.1 概述随着科技的快速发展,计算机在生活中越来越普及,家家户户都能享受到计算机带来的方便。当今社会是一个信息化的社会,对信息的研究变得越来越重要,信号波形的模拟可以使研究人员方便,快捷,直观地观察出结果,加深对波形的理解。传统意义上的信号模拟是在实验室中进行的,对硬件要求比较高,在实验的过程中仪器会受到环境,仪器,和操作不当等方面的影响,致使研究的数据不完善,有时候可能会得到不准确的波形,导致研究人员对实验数据的错误研究,而且信号处理具有概念非常抽象,内容复杂而且多变,设计要求难度普遍偏高等特点,所以学生在学习信号系统时往往会感到枯燥乏味,难以沟通理解和掌握,这给老师们的教学难度带来了极大的不便。而用软件的形式对信号波形进行仿真,具有操作简单方便,界面可视性强等特点,而且在进行实验时可以对数据进行修改,实验内容比较丰富,结果直观易懂,便于分析,一目了然,生成的图形也可以保存,大大缩短了实验时间,使学习人员清楚直观地认识和掌握信号与系统中的一些基本知识。所以仿真实验是大学生活中一个重要的学习实验平台。1.2 基于Matlab的信号与系统实验平台的研究现状Matlab软件目前在全世界内都很流行,尤其是在工程计算领域。Matlab是由美国MathWorks公司生产的一款具有商业科技价值应用的软件,作为最常用的虚拟实验仿真软件,具有适合多学科性,功能强大,仿真度高等特点。它是一种面向对象的交互式程序设计语言,利用其图像用户界面设计技术和强大的仿真功能来完成原本在物理设备上所需要完成的理论实验,不但可以把书本上难以理解的抽象知识通过图形,数据,文字等多种形式表示出来,而且为实验教学提供了一个界面友好,操作简单的虚拟环境。GUI工具是一种包含很多种图形对象的界面,包括图形显示、功能按钮控件以及用户自定义的功能菜单等主要内容,用户可以利用属性、事件过程和菜单等编辑器,来构建一个界面良好,功能完善的交互式操作平台,进而实现人机信息的交互。在设计界面内,用户可以根据要求来完成整个实验,而不用担心实验内部是如何进行运作的。GUI设计主要依赖于MATLAB环境所提供的基本科学计算,同时也可以利用GUI来进行设计,用户可以很方便地创建各种图形句柄对象,实现仿真平台的用户界面设置功能。“信号与系统”这门课程理论性很强,在教学中出现了教师难教,学生难学的情况,对学生的学习理解带来了极大的不便。如何深刻理解基本物理概念,理清基本物理过程,牢固掌握它的分析方法并能够灵活运用到理论工具来解决实际问题,是教学过程中所要迫切解决的重要问题。为了解决这一难题,在国内外的信号与系统的教材中,都加入了Matlab的一些基本实验内容,利用实验来加深学生对课程的理解能力和实际动手分析能力,起到一个一举两得的作用。1.3 研究意义Matlab作为编程语言和可视化工具 , 可以开发出多个不同种的实验平台模块。本设计使用Matlab开发出的实验平台为学生提供了“基本信号产生”、“周期信号的合成与分解”、“抽样定理的验证”及“信号零极点分布与冲激相应的关系”等实验模块。它所形成的界面演示框和通用示波器差不多 , 用于显示信号分析与系统设计的动态仿真过程 , 一目了然,给人最直观的感受。在教学中Matlab能为同学们提供大量的实例, 同时它也可以改变信号的周期、幅值、频率等参数 , 进而观察信号与系统的相应变化。 在实验进行的过程中 , 同学们对所学的书本知识会有感性的认识和直观的验证来加深对“信号与系统”相关知识的理解。本课题避开硬件系统的不足之处,巧妙地运用软件来仿真硬件系统从而实现实验结果,大大降低了实验设备要求,节约了人力和成本,而且有很多的库函数可以在实验时直接拿来调用,避免了用硬件做实验的局限性,实验人员可以更方便地从事信号与系统的实验,为教学和研究提供了方便。还能够锻炼一个人在面对一个具体的项目时,遇到问题,分析问题和解决问题的能力;获得独立思考的空间来完成课题,并按照既定计划进行开发的经验,以及查找相关文献的能力。通过努力使自己对Matlab有一个全面的、深刻的认识,并且对用Matlab做界面的软件有了一定的了解,对系统规划有了初步的认识。为以后研发工作打下坚实的基础,积累宝贵的经验。1.4 本文的主要工作计算机应用在教学学习中有两个层面:一是选择Matlab作为计算工具,编写一些命令程序来计算机的模拟实验。二是不需要编程,通过已经做好的课程软件,输入所需要的数据,改变参数来观察实验结果。显然第二种方案更适合日常的学习理解,所以学生需要一套这种操作系统,这种操作系统不需要编程,只要输入参数和改变数据,就可以形象,直观地观察出课程中难以理解的复杂公式。为此,研究人员利用Matlab强大的数值计算和绘图功能,采用图形用户界面(GUI)编程方法,设计出一套“信号与系统仿真模拟实验平台”。该课题选择在实验环境中,用教学辅助软件帮助学生完成数值计算、信号分析的可视化建模及仿真调试。利用计算机来进行辅助教学是传统教学改革上的一个重要的突破,它可充分利用计算机的特点,如文字、声音、动态图形及友好的人机界面等生动地表达抽象的概念和理论,使学生在可视化的环境中易于掌握和理解所学知识。本实验以应用软件Matlab为平台,开发出可以在计算机网络环境下使用的,与“信号与系统”教学大纲相配套的教学辅助软件。设计的实验软件系统在Matlab7.0环境下进行,利用Matlab的图形用户界面设计工具GUI来进行整个系统的设计。要求完成至少四个模块:基本信号产生模块、周期信号的分解与合成模块、抽样信号及频谱(或抽样定理的验证)模块、信号零极点分布与冲激响应的关系模块等。1.5 小结本章主要介绍了该课题的研究背景及研究现状,总结了国内外对于该领域的研究现状和研究本课题的目的与意义,并说明其在教学实验中的应用。此外本章还分析了课题设计的一些工作,总体介绍了该课题的设计方法和设计思路,最后叙述了论文的主要工作。3计算机信息工程学院毕业设计说明书第2章 开发平台的介绍2.1 Matlab语言的简介Matlab语言是当今科学界最具活力和最具影响力的软件,它逐渐发展成为了一种高度集成的计算机语言。它提供了灵活的程序设计流程,高质量的界面设计,强大的科学运算和便捷的与其他语言衔接的功能,所以在各国的科学研究当中Matlab语言起到了重要的作用。Matlab是“矩阵实验室”(Matrix Laboratoy)的缩写,它是一种以矩阵运算为基础的交互式程序语言,基本元素是无须定义维数的矩阵,方便矩阵的存取,主要用于科学、工程计算及绘图的需求。Matlab数值计算的基本单位是复数数组,使得Matlab高度“向量化”,它使用方便,输入简捷,运算高效,内容丰富,并且很容易由用户自行扩展,其特点是简洁,高效与方便,是其他语言无法比拟的。Matlab使用解释方式工作,键入程序就可以立即得到结果,人机交互性高,深得科研人员的喜爱,特别是Matlab能适应多种平台,能随着计算机硬件的更新而及时升级,不影响实验的需求。大学的电子信息类学生假如能很好地掌握Matlab软件,就可以大大提高所学知识的理解能力和分析研究的效率。Matlab的最突出的优点就是简洁,它用更直观,符合大家思考方式的代码,代替了传统的C和FORTRAN语言的冗长代码,给用户带来的是最直观,最简洁的程序开发环境,这是大家希望看到的。Matlab之所以可以在世界范围之内流行,具有以下几个特点:(1)语言简洁紧凑,编程效率高因为Matlab定义了专门用于矩阵运算的运算符,所以矩阵运算可以像列出算式一样简单方便,而且这些运算符本身就能执行标量和向量的多种运算,关键是库函数都是由本领域的专家编写,不用质疑它的正确性。用户利用这些运算符可以使高级语言中的循环结构变成一个简单的Matlab语句,然后再结合Matlab丰富的库函数可以使程序变得非常简短,几条语句即可代替几十行C语言或FORTRAN语言程序语句的功能,给学生节省了不少脑力和时间。(2)交互性好,使用方便在MATLAB的命令窗口中输入一条指令,就能马上看到该条指令的执行结果,体现了良好的交互性。交互方式减少了编程和调试程序的工作量,给用户带来了很大的方便。(3)绘图功能强大,便于数据可视化Matlab不但能在多种不同坐标系中绘制二维曲线,还能绘制三维曲面,体现了强大的绘图能力。正是这种能力给数据的可视化提供了方便,使数据的展示更加形象生动,有利于描绘出数据间的内在关系。(4)领域广泛的工具箱,便于众多学科直接使用功能强大的工具箱是Matlab的另一特色,包含两个部分:核心部分和各种可选的工具箱。其工具箱又可以为两类:功能性工具箱和学科性工具箱。功能性工具箱主要有扩充符号计算,图示建模仿真和文字处理及与硬件实时交互功能。而学科性工具箱有很强的专业性,如优化工具箱、控制工具箱、统计工具箱、图像处理工具箱、通信工具箱等。(5)开放性好,便于扩展除内部函数外,所有Matlab的核心和工具箱文件都是可读可改的源文件,体现了Matlab的开放性。开放性也是Matlab受人们欢迎的另一个特点,用户可通过对源文件的修改或者加入自己的文件构成新的工具箱来满足用户本身的需要。2.2 Matlab的开发环境2.2.1 Matlab7.0Matlab7.0是Matlab6.0的升级版本,兼容性比较好。Matlab7.0的界面并没有太大改变,命令(Command)窗口仍然是用户主界面,图形窗口用来显示图形信息和创建图形界面用户,文本编辑器用来创建和编辑Matlab代码。Matlab7.0在数值表示和操作方法上有了新变化,增加和修改了一些内核数值算法,可以支持各种数据类型的数学运算。随着Matlab7.0不断升级以及商业化,它的用户界面也越来越精致简洁,更加符合于Windows的标准界面,人机交互,操作更简单。新版本的Matlab7.0还提供了联机查询帮助功能,当用户不确定自己的编写程序是否出现问题时,可以上网进行查证,方便了用户的使用。简单的Matlab编程环境提供了完善的调试系统,程序不需要经过编辑就可以直接运行出来,并具有及时地报告错误和对数据错误分析的能力。2.2.2 图形界面用户(GUI)图形用户界面(GUI)是指采用图形方式显示计算机操作环境的用户接口。随着计算机的快速发展,GUI的使用越来越广泛,它极大地方便了非专业人士的使用,不需要、死记硬背大量的公式,节省了用户很多宝贵的时间,取而代之的是通过窗口,按键,菜单等方式来进行操作。嵌入式GUI具有以下几个基本要求:轻巧,高性能,可靠性大,占用资源少,便于移植,方便配置等特点。图形用户界面是由各种图形对象,如图轴,图形窗口,菜单,按钮,文本框按钮等构建的用户界面,是人机交流信息的工具和方法。GUI设计可以由两种形式来实现。一种是由GUIDE工具进行编写,这种方法的好处在于简单易懂,比较容易上手,但是对于一些复杂的功能实现比较困难,不能完善优化整个系统。第二种方法是基本代码法,就是在M文件当中用Matlab语言来编写出所有图像对象控件所对应的代码,通过这种方法,用户可以很轻松灵活的来实现所需要的功能,本实验中所用到的一些控件就是按照这种形式定义好了,方便用户的编写,这种方法的优点在于功能比较强大,能满足用户的任何需求,可以通过编码来实现许多复杂的功能,调试起来也比较方便,但是缺点在于编写程序比较复杂难懂,上手十分困难。因为用户是初学者,对于Matlab语言还不是很了解,所以选择第一种形式来满足此次试验的要求。创建 Matlab 用户图形界面必须由三个基本元素组成:1.组件。在 Matlab GUI 中的每一个项目(按钮,标签,编辑框等)都是一个图形化组件,组件可分为三类:图形化控件(按钮,编辑框,列表,滑动条等),静态元素(窗口和文本字符串),菜单和坐标系,图形化控件和静态元素由函数 uicontrol创建,菜单由函数uimenu 和 uicontextmenu创建,坐标系常用函数axes创建,用来显示图形化数据。2.图像窗口。GUI 的每一个组件都必须安排图像窗口中。以前,用户在画数据图像时,图像窗口会被自动创建。但用户还可以用函数 figure 来创建空图像窗口,空图像窗口经常用于放置各种类型的组件。3.响应。最后,当用户用鼠标或用键盘输入一些信息,那么程序就要有相应的动作。鼠标单击或输入信息是一个事件,如果 Matlab 程序运行相应的函数,那么Matlab 函数肯定会有所反应。例如,如果用户单击一个按钮,这个事件必然导致相应的Matlab 语句执行。这些相应的语句被称为响应。只要执行 GUI 的单个图形组件,必须有一个响应。2.3 小结本章主要介绍了本课题的开发平台,简述了Matlab语言的优缺点,简述了设计平台(GUI)的搭建步骤,在下面的章节中将详细介绍GUI平台的搭建过程。5计算机信息工程学院毕业设计说明书第3章 GUI的建立3.1 GUI界面基本操作为什么用户要在MATLAB中使用GUI呢?其实GUI相当于MATLAB中的Visual Basic,是面向对象的编程,可以使用户不懂MATLAB语言也可以轻易操作该程序GUI编辑界面主要包括GUI对象选择区,GUI布局区,GUI工具栏和状态栏4个部分。本小节将简述一下GUI界面的基本操作,具体操作步骤流程在以后的章节中具体阐述。1、启动GUIDE用户有两种方法启动GUIDE。第一种是在命令行里输入:guide,点回车键进入GUI界面。第二种在MATLAB主界面左上角点击File-New-GUI-Create New GUI-Blank GUI-OK即可打开图形用户界面开发环境。创建了新的GUI之后用户可以选择4种样板: Blank GUI:一个空的样板,用户打开之后可以编辑所需要的figure子对象,方便用户。GUI with Uicontrols:打开之后包含uicontrol对象的编辑器,具有单位换算功能。GUI with axes and Menu:打开之后包含菜单栏和坐标轴图形对象的编辑器,具有数据描绘功能。Modal Question Dialog:打开以后是一个对话框的编辑器,默认为一个问题的对话框。本次的实验都是最基础的信号与系统的研究,所以选择Blank GUI样板。在里面可以拖放需要的控件,包括pushbutton、slider、radiobutton、togglebutton、checkbox、listbox、popupmenu、edit text、static text、table、axes、panel、buttongroup、activeX control,这些属于uicontrol对象。还可以添加菜单,进行各种属性的设置,使Matlab界面看起来更美观。布局好后,用户点保存按钮保存成fig文件,剩下的主要工作就是编写callback函数。2、界面菜单:可以通过uimenu函数添加菜单; 3、基于命令行的控件:可以通过uicontrol函数按照指定的属性值来创建控件对象;4、GUI布局区。GUI布局区用于布局GUI对象,使用GUIDE编辑器编辑GUI,要分别编辑两个文件:一个是fig文件,包含了GUI对象属性设置和布局,另一个是M文件,包含了控制GUI对象执行的回调函数,用户一旦使用了GUIDE编辑器,就一定会同时存在这两个文件。所以用户首先需要对GUI对象属性布局设置,然后再编辑回调函数。3.2 回调函数当一个图形对象发生时,GUI传递要执行的子函数到M文件下,该子函数就是所谓的回调函数(也称为callback函数)。在Matlab中,如果控件是按钮,点击按钮时,按钮下的Callback就会触动执行命令;如果控件是滑块,拖动滑块时,滑块下的Callback就会执行。具体地讲,当用户对控件进行默认操作时,Matlab后台就会自动调取所需要的Callback函数。3.3 GUI的M文件由GUIDE生成的M文件,控制着GUI以及用户操作之后的响应,它包含了运行响应的所有代码。当用户建立GUI界面时,系统会自动生成其M文件的大体框架,所以用户就可以在其框架下编写该控件的回调函数。GUI的M文件由一系列的子函数构成,包括了主函数,Opening函数,Output函数和各种回调函数CallBack。函数gui_mainfcn是GUI默认的处理函数。它根据传入的参数来确定执行回调函数还是打开GUI运行OpeningFcn和OutputFcn。如果回调函数为空,就直接运行GUI,打开fig文件,否则就执行gui_CallBack指定的子函数。Opening函数是在GUI开始运行但还不可见的时候执行,主要进行一些初始化的操作,Output函数是在需要的时候可输出数据到命令行。当用户每次触发GUI对象时,执行相对应的Callback函数。其实这些CallBack函数可以看做M文件里面的子程序,里面就填写你所期望程序做的响应,比如画一个图或者计算一个式子。特别声明:主函数是已经编辑好的不能修改,否则会导致GUI界面的初始化失败。3.4 控件的介绍用户在实际使用Matlab时是通过一些基本的控件灵活运用来地进行设置,来满足用户的需求。主要的操作步骤是在GUI界面中拖动你需要的控件,双击控件进行属性设置。GUI中包含了触控按钮(Push Button),静态文本(Static Text),切换按钮(Toggle Button),滑动条(Slider),单选按钮(Radio Button),可编辑文本(Edit Text),复选框(Check Box),列表框(Listbox),弹起式菜单(Pop-up Menu),按钮组(Buttongroup)。面板(Panel),表格(Table),坐标轴(Axes)等13个控件,由于篇幅有限,在下面的小节中主要介绍本实验用到的一些控件。3.4.1触控按钮(Push Button)首先用户在GUI工具栏中找到Push Button按钮,放置在布局区适合的位置,可以调整figure的大小。触控按钮是GUI中最常用的也是最简单的控件,当用户按下此按钮时,MATLAB就会马上执行此按钮中相对应的Callback程序来产生相应的动作。在Push Button上双击左键,可以在属性查看器上查看和设置Push Button的所有属性,如下图3-1所示:图3-1 触控按钮触控按钮的一些基本的属性设置如下:BackgroundColor:背景色,即Push Button的颜色。String:标签,即Push Button上所显示的文本文字。Callback:仅当Enable属性为on时,在Push Button上单击左键,调用此函数。Enable:显示Push Button是否激活,on表示激活,off表示不激活且为灰色;inactive显示不激活但表示为激活状态。FontName,FontSize:设置标签字体。Visible:可见性,若值为off,隐藏该按钮。触控按钮最主要的应用是编写它的回调函数,在Push Button按钮上单击右键,选择View Callbacks-callback,用户在这里面编写需要的M文件。3.4.2坐标轴(Axes)Axes是用于数据的可视化应用,即显示图像或者图形,主要显示运算结果的图像,比如波形图,影像图等。它是核心图形对象的容器,包含了image,light,line,surface和text等核心图形对象。用户首先在GUI中创建一个axes,放在布局区适当的位置,调整它的窗口大小,如下图3-2所示:图3-2 坐标轴坐标轴的一些基本属性如下:Box,Title:坐标轴方框与标题。XTick,YTick,XMinorTick,YMinorTick,XTickMode,YTickMode:X,Y轴刻度,X,Y轴次级刻度,以及X,Y轴刻度模式。Position,Units:位置与计量单位。ButtonDownFcn:当Enable属性为on时,在axes上单击右键或者在axes周围5像素范围内单击左键或者右键,调用此函数;当Enable属性为off或者inactive时,在axes上或者axes周围5像素范围内单击左键或者右键,调用此函数。3.4.3静态文本(Static Text)Static Text通常用于显示其他对象的数值,状态等情况。不同于Edit Text,Static Text控件最主要的作用是编辑标题。用户在GUI中创建一个Static Text,放在布局区适当的位置,调整它的窗口大小,如下图3-3所示:图3-3 静态文本静态文本的一些基本属性如下:BackgroundColor:背景色。Position,Units:位置与计量单位。String:标签,即静态文本显示的文本文字。ForegroundColor:标签颜色。ButtonDownFcn:当Enable属性为on时,在静态文本上单击右键或者在静态文本周围5像素范围内单击左键或者右键,调用此函数;当Enable属性为off或者inactive时,在静态文本上或者静态文本周围5像素范围内单击左键或者右键,调用此函数。3.4.4弹起式菜单(Pop-up Menu)弹起式菜单也叫下拉菜单(Pop-up Menu),与Listbox类似,都是定义String来显示一组选项,但是两者之间也有一些区别:下拉菜单更加节省界面空间,需要单击左键才能够调出这些选项;下拉菜单不能够同时选择多个选项。结合switch.case的陈述式,当一个程序需要用可供选择的函数式,可以使用此功能去实现,然后再搭配Push Button按钮进行程序的执行。用户编辑时Pop-Menu的内容选项数目必须跟switch case的编辑数目相同,不然会引起混乱,回调函数出错。在GUI中创建一个Pop-up Menu,放在布局区适当的位置,调整它的窗口大小,如下图3-4所示:图3-4 弹起式菜单弹起式菜单的一些基本属性如下:BackgroundColor:背景色。Enable:激活状态。Value:选中的项所对应的序号。设一共有n个选项,则Value只能是1,n之间的整数。String:标签,即每个选项的文本内容。Callback:当Enable属性为on,在Pop-up Menu上单击鼠标左键时,才能调用此函数;每执行一次Callback函数,Pop-up Menu的选项列表会弹出一次。3.4.5可编辑文本(Edit Text)Edit Text允许用户修改文本内容,用于数据的输入与显示。当Max-Min1时,允许Edit Text显示多行文本文字,否则的话只允许单行输入。可编辑文本控件主要当做一个输入的界面,以便用户能够输入字符串以及数字。在GUI中先创建一个Edit Text,然后放在布局区适当的位置,调整它的窗口大小,如下图3-5所示:图3-5 可编辑文本一些基本属性如下:BackgroundColor:背景色。String:文本内容。ForegroundColor:文本颜色。Callback:文本内容经过编辑,点击窗口内任意的GUI对象,就会执行Callback函数。3.5 小结通过本章的简述,用户应该对MATLAB中的GUI界面的设计有了一个大体的了解,本章对一些常用的控件也做了介绍,方便用户在下面的设计中能够灵活的运用。接下来的任务就是按照本课题的思路,设计出能满足要求的界面来。13计算机信息工程学院毕业设计说明书第4章 系统软件平台设计4.1引言信号系统的实验是比较繁琐复杂的,很多实验需要输入不同的参数来达到实验的要求,假如用户把系统设计成一个界面的话,会使得整个界面看起来繁琐,拥挤,不能体现出界面友好,美化的功能。因此,用户在设计界面的时候,采用一个主界面和4个子界面的形式,每个子界面就是一个模块,来实现一个功能的需求,并通过主界面来调用子界面的设计方案。4.2系统整体框图本实验所演示的信号与系统的实验比较简单,都是一些基本信号的演示与验证,所以用户设计的系统整体看起来比较简洁,主要由5个界面模块构成:一个主界面加4个模块界面(基本信号产生模块、周期信号的分解与合成模块、抽样定理的验证模块、信号零极点分布与冲激响应的关系模块),用户从主界面开始,当需要演示某个实验时,点击响应的模块按钮进入到子界面,输入不同的参数来实现实验。当用户希望从子界面退到主界面进行另一个实验时,用户只需要点击右上角关闭按钮就可以了。系统的整体结构框图设计如下图4-1所示:图4-1 系统框图4.3系统设计步骤在本实验平台的设计中,用户采用自顶向下的设计思路对界面布局进行设计,即先设计实验主界面,拖动控件使布局区看起来美观得体,再设计各个实验子界面,子界面的布局能符合实验的要求,方便输入参数来观察图形的变化,界面设计完成后,用户再借助于函数调用来达到实验目的。在设计中,先编写各个实验子界面的回调函数,然后再编写主界面的回调函数,各个回调函数的编写顺序是采用自上而下的设计方法来实现的。其具体的设计步骤如下:1)利用MATLAB 的GUI设计方法,设计实验系统的主界面及拟定设计的“信号与系统”课程中具体实验的子界面。2)对主界面进行回调函数的编写,功能上实现主界面与实验子界面的自由切换。3)对各个子实验界面的控件按钮进行回调函数的编写,使控件按钮实现相应的功能,用户可以通过界面上的各个控件就可以改变数据的输入输出值,使实验人员可以方便地读取实验结果的数据和分析图像的功能。4)对系统总体进行调试和完善,能符合老师的基本要求。4.4系统模块4.4.1模块划分简介本系统用户要根据不同的实验类型,控件个数的不同要求来规划模块,在设计的时候用户应本着界面美观,简洁的原则来进行规划,各个模块之间可以互相切换,每个实验可以完成参数的传递。这样才能满足用户的基本需求。4.4.2模块具体设计主界面模块。在主界面模块中本着方便简单又不失水准的原则,用到了3个静态文本和5个触控按钮控件来组成界面,然后用户把这8个控件放在布局区适当的位置,使界面看起来美观。为了使主界面看起来醒目,用户把标题的颜色设置成红色,体现了本次课题的研究对象,其他控件里的文本字体颜色不变。主界面设置如下图4-2所示:图4-2 主界面模块在图中可以看到本实验的主要模块,简洁明了,通过这些控件,在主界面上选择任何一个实验都可以切换到它的子界面,体现了GUI的界面友好交互性,当用户想结束本次实验时,点击“退出系统”按钮就可以关闭此系统来结束实验。实现这些子界面与主界面的连接的部分程序如下所示:function btn_GeneSignal_Callback(hObject, eventdata, handles)GenerateSignal; % 调用“基本信号生成”子界面function btn_ComposeAndDecom_Callback(hObject, eventdata, handles)SignalCompose; % 调用“信号合成”子界面function btn_Sample_Callback(hObject, eventdata, handles)SampleVerify; % 调用“采样定理验证”子界面 function btn_Impulse_Callback(hObject, eventdata, handles)ZeroImpulse; % 调用“零极点和冲激响应关系”子界面function btn_Quit_Callback(hObject, eventdata, handles)delete(handles.fig_SignalPlat); % 退出系统接下来用户就要详细地介绍每个子系统界面怎么样设计和编写代码来实现实验需求。每个模块之间是互相独立的,不影响用户对实验的进行,当某个模块不能运行时,其他模块必须可以独立运行才能基本达到实验要求。基本信号产生模块。在基本信号产生模块当中用户使用了8个静态文本,5个触控按钮,1个坐标轴和8个可编辑文本控件组成。然后用户把这些控件按照习惯摆放,使界面看起来美观。基本信号界面如下图4-3所示:图4-3 基本信号模块人们在日常生活和工作中都离不开信息,需要对各种信息进行获取,传输处理和存储。信号常指的是时间函数,其函数的图像称为信号的波形。严格的说用户在生活中遇到的都是随机信号,虽然如此,研究确定信号仍然是十分重要的。基本信号是学习信号与系统的基础,一些复杂的信号都是由基本信号构成的,所以对基本信号的理解认识能加深后续知识的了解。基本信号有很多种,为了方便快捷地观察波形,也为了设计的方便,选取了5个平时学习当中常用到的连续时间信号:正弦信号,指数信号,阶跃信号,冲激信号,抽样信号。在正弦信号当中用户输入幅值,频率,和相位等参数,通过参数的改变来进行波形的变化,在指数信号当中用户输入幅值和相位等参数来实现图像。阶跃信号,冲激信号,抽样信号因为都是特殊的函数,已经固定好了波形,为了整体布局的美观,用户就设置了平移量参数,遵循左加右减的原则。当用户输入不同的参数时,波形就会有相应的变化。下面逐一介绍每个基本信号的生成过程:正弦信号正弦信号的公式。正弦信号,一般写做: (4.1) 式中A为振幅,是角频率,P为初相位。正弦信号是周期信号,其周期T与角频率和频率满足下列关系式:T=2=1f (4.2)正弦信号生成的编写代码如下:function btn_Sin_Callback(hObject, eventdata, handles)% hObject handle to btn_Sin (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes1); % 制定画图的轴A=str2num(get(handles.edit_Amplitude,String); % 读取幅值W=str2num(get(handles.edit_Frequency,String); % 读取频率P=str2num(get(handles.edit_Phase,String); % 读取相位 t=0:.001:10; % 画正弦信号 ft=A*sin(W*t+P);plot(t,ft);grid;title(正弦信号);xlabel(t);ylabel(sin(t);正弦信号产生的波形图4-4如下所示:图4-4 正弦信号2.指数信号指数信号的表示式为: (4.3) 在式中,a和K为两个主要的参数,a是实数,若a0时,信号随着时间增加而增长,若a0); % 阶跃信号实现plot(t,ft); % 画阶跃信号图形axis(str2num(get(handles.edit_StepTranslation,String)-10,str2num(get(handles.edit_StepTranslation,String)+10,-0.2,1.2);title(阶跃信号);xlabel(t);ylabel(u(t);阶跃信号产生的波形图4-6如下所示:图4-6 阶跃信号4.冲激信号冲激函数是一种特殊的函数,在理论意义上冲激函数是阶跃函数的微分。冲激函数具有对称性,时域扩压性和抽样特性等特性。冲激函数的表达式为,当时,。冲激信号产生的编写代码如下:function btn_Pulse_Callback(hObject, eventdata, handles)% hObject handle to btn_Pulse (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes1); % 制定画图的轴 t1=str2num(get(handles.edit_PulseTranslation,String); %输入平移量t=-t1-1:0.01:-t1+1; %信号时间样本点向量n=length(t); %时间样本点向量长度x=zeros(1,n); %产生一行全0矩阵,即各样本点信号赋值为0x(1,(n-1)/2)=1; %在t=-t0处,给样本点赋值stairs(t,x); %用stairs命令画步进图形axis(-str2num(get(handles.edit_PulseTranslation,String)-1,-str2num(get(handles.edit_PulseTranslation,String)+1,0,1);title(冲激信号);xlabel(t);ylabel(delta(t);冲激信号产生的波形图4-7如下所示:图4-7 冲激信号5.抽样信号抽样信号的表达式为: (4.4)抽样信号也是周期函数,还是偶函数,抽样信号的编写代码如下:function btn_Sample_Callback(hObject, eventdata, handles)% hObject handle to btn_Sample (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)axes(handles.axes1); % 制定画图的轴t=-3*abs(str2num(get(handles.edit_SampleTranslation,String)*pi:pi/100:3*abs(str2num(get(handles.edit_SampleTranslation,String)*pi; % 限定信号时间范围ft=sinc(t+str2num(get(handles.edit_SampleTranslation,String)/pi);% 生成采样信号axis(str2num(get(handles.edit_SampleTranslation,String)-10,str2num(get(handles.edit_SampleTranslation,String)+10,-1,1); % 画采样信号plot(t,ft);title(抽样信号);xlabel(t);ylabel(Sa(t);抽样信号产生的波形图4-8如下所示:图4-8 抽样信号周期信号的合成与分解模块。按照三角形式的傅里叶级数理论,满足一定关系的直流信号和无穷多项的正弦信号能逼近原来的信号,即一个信号可以分解成一个直流分量和许多不同频率的正弦分量之和。主要表现在各频率的正弦分量所占比重的大小。根据周期信号的傅里叶级数展开式得到,任何一个非正弦的周期信号,只要满足狄里赫利条件都可以分解成一个直流分量和由基波及各次谐波分量的叠加。同样,由基波及各次谐波分量都可以叠加成一个周期方波信号。傅里叶级数的项数决定了叠加的信号与原信号之间的误差。吉布斯当年发现了一个现象:将具有不连续点的周期函数进行傅里叶级数展开之后,选取有限项进行合成。当选取的项数越多,所合成的波形中出现的蜂起越靠近信号的不联系点。当选取的项数无穷大时,该峰起值趋于一个常数,大约等于总条数的9%。这种现象称为吉布斯现象。用户运用MATLAB软件来分析方波信号的构成,仿真了直流信号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 七年级生物下册 4.3.1《呼吸道对空气的处理》说课稿1 (新版)新人教版
- 挂车公司考试题及答案
- 工地推车考试题及答案大全
- 乡镇生活污水处理厂改造项目节能评估报告
- xx城供热站新建工程风险评估报告
- 2025融资租赁委托合同样本
- 路基工程基础试题及答案
- 120万千瓦光伏项目施工方案
- 2025民宿租赁合同范本下载
- 光伏玻璃砂生产项目经济效益和社会效益分析报告
- 2025年酒店布草租赁与维护保养服务合同范本3篇
- 天然气管道输送服务协议
- 创业入驻孵化协议
- 中国自身免疫性胰腺炎诊治指南(上海2023)
- 邮政社招笔试题
- 节前物业安全培训
- 2024年-2025年《公路养护》知识考试题库与答案
- 与信仰对话 课件-2024年入团积极分子培训
- 国际地图语言学研究进展
- 《水利水电建设工程验收规程》-SL223-2008
- AIOT智能物联产业学院建设方案
评论
0/150
提交评论