17用MATLAB软件实现《信号与系统》课件的设计
收藏
资源目录
压缩包内文档预览:(预览前5页/共46页)
编号:26845795
类型:共享资源
大小:755.03KB
格式:RAR
上传时间:2019-11-26
上传人:qq77****057
认证信息
个人认证
李**(实名认证)
江苏
IP属地:江苏
12
积分
- 关 键 词:
-
信号与系统
17
MATLAB
软件
实现
信号
系统
课件
设计
- 资源描述:
-
17用MATLAB软件实现《信号与系统》课件的设计,信号与系统,17,MATLAB,软件,实现,信号,系统,课件,设计
- 内容简介:
-
目录摘要IAbstract 第一章 引言11.1论文写作的大背景11.2问题的提出2第二章 MATLAB软件简介52.1 MATLAB介绍及其特点、功能、优点52.2 MATLAB语言平台简单介绍72.3图形用户界面编程过程7第三章 信号与系统课程介绍93.1 信号与系统简介93.2本设计涉及的信号与系统课程内容介绍10第四章 MATLAB与信号与系统结合的简单实例124.1 MATLAB中信号的表示和可视化124.2信号与系统与 MATLAB结合其他例子14第五章 实验系统的设计过程和主要代码155.1 实验系统的设计过程155.2 系统设计过程详细介绍24第六章 实验系统各模块简单介绍346.1 函数基本性质模块介绍346.2 信号抽样模块简单介绍376.3 信号频谱分析模块简单介绍376.4 LTI系统特性模块简单介绍39第七章 结论及进一步研究方向41参考文献42致 谢4343摘要随着计算机技术和信息技术的飞快发展,数字信号处理技术在各种工程技术领域,特别是新兴高技术产业内获得了越来越广泛的应用。因而信号与系统课程作为学习数字信号处理技术的基础课程,越发受到师生的重视。利用MATLAB强大的计算仿真功能和方便易用的图形绘制功能可以将抽象的数学和技术理论以易于理解的可视化形式展示给学生,起到更好的教学效果。关键词:信号与系统,MATLAB,教学AbstractAs the computer technology and information technology develop rapidly, digital signals disposing technology is becoming more and more important ,especially in high tech industry. So the signal and system course , which is the base of studying digital signal disposing technology, attaches a more importance of both teachers and students. We can make use of the powerful calculate function and convenient graph protract function of MATLAB to make the abstract mathematic theory more understandable and have a better teaching effect.Key Words : MATLAB , signal and system,teaching 第一章 引言1.1论文写作的大背景课堂教学是目前高校开展教学活动的一种主要形式, 学生的大多数学习时间是在教室、实验室里度过的,课堂和实验室的教学活动为学生的学习和成才提供了极其重要的场所和机会。因此,课堂和实验的教学效果如何,直接关系到我们培养出来的人才的质量,直接关系到高校创新教育的成败。改革教学手段和方法是推进创新教育的重要条件。实施创新教育,必须研究和创新课堂、实验教学的手段和方法。 1. 从近几年对教学情况的调查和学生反映来看,当前高校在教学方法上还是存在很多问题的。从教师方面看主要有: (1) 许多教师在教学方法上采“注入式”、“填鸭式” 和“满堂灌”等落后的教学方法,尤其以青年教师严重;缺乏启发、引导、教与学间的交流。(2) 以教师为主、以课堂为中心的传统的传授知识的教学方法仍普遍存在;缺乏教与学的双主体教学法,没有充分调动学生学习的积极性和主动性。(3) 采用共性、集中、统一的教学方式明显增多,而有利于促进学生个性发展和全面发展的教学方式显得非常不足。从学生方面看:由于受“应试教育”和落后教学方法的影响,被动学习、死记硬背、课堂气氛死气沉沉依然存在;学习热情普遍不高,缺乏构造学生知识层和科学、人文层次等。2. 存在这些问题的原因很多,有客观的有主观的。较为普遍的一是高校对教学方法这个关系到培养人才质量的问题重视不够,热情不高,多年来不组织和开展教学方法研究,不采取有效措施推广好的教学效果方面的经验,不开展同门课逐章逐节内容和适合方式的集体研讨活动等。二是在许多中青年教师的认识上,存在教学是软的,承担科研任务的数量是硬的等观念;教师在教学上投的精力不足,而在搞科研、写论文或考研,评职称上狠下功夫。3. 应高度重视教学观念和教学方法的改革。江泽民同志1996 年6 月在全教会上指出,教育在培养民族创新精神和培养创新人才上,肩负着特殊的使命。“必须转变妨碍学生创新精神和创新能力发展的教育观念、教育模式,特别是由教师单向灌输知识,以考试分数作为衡量教学质量的唯一标准。” 陈至立同志也指出:“教学方法已不是一个战术问题,而是一个战略问题”。1.2问题的提出1.2.1信号与系统教学中存在的问题 信号与系统课程作为电子信息类专业的一门基础课程在实际教学中占据重要地位。该课程无论是从教学内容还是从教学目的来看,都是一门实践性较强的课程,其基本方法和原理广泛应用于计算机信息处理的各个领域. 因此,如何有效地提高信号与系统课程的教学质量和效果,使学生在信号处理与分析领域具有较强的主动获取知识和独立解决问题的能力,是一项具有重要意义的工作.但是,由于信号与系统课程的特点是概念抽象,数学含量大;繁杂的教学公式推导及其数学结果常常使学生难于理解,再加上长期以来,由于信号与系统课程本身的特点导致的教学方法和手段的单一,使信号与系统这门课程一直处于教难学更难的困难境况中. 该课程是一门公式和理论推导相对较多的学科,黑板式的单一教学方式,使学生只能依靠做习题来巩固和理解所学知识,面对大量应用性较强的内容学生不能实际动手设计、调试和分析,教学中的负面效应越来越突出 :1) 该课程的特点是数学要求较高,理论结果往往来源于复杂的数学运算及推导,这就导致学生将大量的时间用于进行数学运算(如微分、积分、方程求解、多项式求根等),而没有真正理解该结果在信号处理中的实际运用. 因此,学生迫切需要一种工具软件来完成课程中的数值计算与分析. 2) 由于是黑板式教学及习题式练习,课程中大量信号分析的结果缺乏可视化的直观表现. 例如,对于信号分析的波形学生只能用手工绘制,信号频谱特性或系统频率响应只能表现为不易理解的数学表达式,拉普拉斯变换也不能看到直观的三维空间表现,这些都严重影响了学生对所学知识的理解. 3)从实践环节来看,传统的信号与系统实验是基于验证性的实验,即使是要求学生完成的一些用软件实现的算法也是基于C 语言的,但由于大多数学生C 语言编程能力有限,学生的计算机编程解决专业基础课及专业课具体问题的能力较差,致使学生不能有效地完成实验,难以适应现代教学要求。4) 由于缺乏实验环境中的设计、分析过程,学生在学习过程中被动性较大. 特别是在系统设计方面,学生自己设计的系统,经过复杂的手工数学计算后,往往不能直观地得到系统特性的可视化测试结果,达不到培养综合能力的目的.5)教材内容偏重理论,相关理论的最新应用实例不够,容易造成理论于实际的分离。基于以上几点,该课程迫切需要在实验环境中,用教学辅助软件帮助学生完成数值计算、信号分析的可视化建模及仿真调试。利用计算机辅助教学是对传统教学手段一大突破,它可以充分利用计算机的特点,如文字、声音、动态图形及友好的人机界面等生动地表达抽象的概念和理论,使学生在可视化的环境中易于掌握和理解所学知识。1.2.2 信号与系统实验目前流行方式对比 ()硬件实现方式 即利用示波器、波形分析仪观察信号的波形,分析信号的组成,利用选频电平表或频谱分析仪测试信号的频谱或系统的幅频特性,用电子器件实现系统的模拟等。硬件实现方式要求投入的设备资金比较多,另外,由于学生在学习“信号与系统”时,所学的硬件知识不够全面,因而在实验过程会遇到超越本身能力的困难,这样的实验效果可能是适得其反。 ()软件实现方式 目前利用软件实现信号与线性系统实验的方法有若干种。常用的几种如下:1、利用 语言编程实现 这种方法只需要提供微机和 语言环境就可以进行了,。需要学生有较强的 语言编程能力和对理论内容有较深的理解。如果学生在这方面基础与能力较差,实验效果就不理想。2、利用SystemView软件实现SystemView 是ELANIX 公司推出的一个完整的动态系统设计、仿真和分析的可视化软件。它提供了开发电子系统的模拟和数字工具, 有大量信号源、接收器、操作符和功能块, 各功能模块都用形象直观的图标表示。使用SystemView 不用编程, 只需用鼠标从SystemView 库中选择图联标并将它们拖放到设计窗口中, 通过连线来创建线性和非线性、离散和连续、模拟、数字、模数混合系统以及各种多速率系统, 可用于各种线性和非线性控制系统的仿真。该软件的操作界面好, 分析结果显示直观, 对系统的修改、调试简单易行, 并提供了与编程语言VC6 和仿真工具MATLAB 的接口, 可以很方便地调用其函数。 3、利用软件实现 由美国公司开发的软件想必大家不会感到陌生,这个软件充分利用了计算机图形处理技术,可以在计算机显示设备上做到输入、输出图形化。但是,在使用分析系统或电路)时,需要画出具体电路图,这种方法离不开具体电路,对信号与系统这门课来讲,具有一定的局限性。4、利用EWB软件实现EWB 软件最明显的特点是:仿真手段切合实际,选用元器件、仪器与实际情形非常相近。其元件库不仅提供了数千种电路元器件供选用,而且还提供了各种元器件的理想值,如对分析精度有特殊的需要,可以选择具有具体型号的器件模型。作为虚拟的电子工作台,EWB 提供了较为详细的电路分析手段,不仅可以完成电路的瞬态分析、稳态分析、时域和频域分析、器件的线性和非线性分析、电路的噪声分析和失真分析等常规电路分析方法,而且还提供了离散傅里叶分析、电路零极点分析、交直流灵敏度分析和电路容差分析等共计14 种电路分析方法1.2.3 在信号与系统教学中引入MATLAB的必要性 虽然我们可以通过做大量信号与系统的试验来帮助学生理解信号与系统中的众多抽象概念。但是,由于信号与系统实验所需的设备价格较高,试验难度较大,许多教学单位都因不具备试验条件而放弃了试验课程的开设,这极大地影响了教育质量的提高。如何找到一种切实可行的途径来解决这一问题一直是努力的方向。近年以来,随着计算机硬件性能的不断提升和计算机软件技术的飞速发展,利用计算机进行虚拟试验成为一种国际潮流,国内也逐步开始了这一方面的工作,并在取得积极的成果。而MATLAB经过多年的不断发展与完善已发展成为由MATLAB 语言、MATLAB工作环境、MATLAB 图形处理系统、MATLAB 数据函数库和MATLAB 应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。它具有以下的功能和特点:高效的数值计算及符号计算功能,能使我们从繁杂的数学运算分析中解脱出来;完备的图形处理功能,实现了计算结果和编程的可视化;功能丰富的应用工具箱,提供了大量方便实用的处理工具;友好的界面及接近数学表达式的自然化语言,便于学习和掌握。实践证明,学生可以在几十分钟的时间内学会MATLAB的基本知识,经过几个小时的使用就能初步掌握它。MATLAB强大的数值分析功能和计算结果可视化功能及其功能丰富的工具箱,使得它特别适合在信号与系统课程中应用,为开发高效、实用的信号与系统虚拟实验提供了强有力的支持。以MATLAB 为平台开发的 信号与系统教学辅助软件可以充分利用计算机快速运算,文字、动态图形、声音及交互式人机界面的特点,运用MATLAB 的数值分析及计算结果可视化、信号处理工具箱的强大功能,将“信号与系统”课程中较难掌握和理解的重点理论和方法通过概念浏览、动态演示及典型例题分析等方式,形象生动地展现出来,从而使学生对所学知识的理解更加透彻,同时运用教学软件中的数值计算工具箱, 将使学生从大量繁琐的手工数学运算中解放出来, 将更多的时间留于对基本概念和基本方法的思考.第二章 MATLAB软件简介2.1 MATLAB介绍及其特点、功能、优点2.1.1 MATLAB的简单介绍和发展过程MATLAB,取自矩阵(Matrix)和实验室(Laboratory)两个英文单词的前三个字母,意即“矩阵实验室”。它是一种以矩阵作为基本数据单元的程序设计语言,提供了数据分析、算法实现与应用开发的交互式开发环境。MATLAB到今天已经历了近30年的发展过程。20世纪70年代中期,美国新墨西哥大学计算机系主任Clever Moler 博士和其同事在美国国家自然科学基金的帮助下,开发了调用LINPACK和EISPACK的Fortran子程序。20世纪70年代后期,Moler博士编写了相应的接口程序,并将其命名为MATLAB。1983年,John Little 和 Moler、Bangert 等一起合作开发了第2代专业版MATLAB.1984年Moler 博士和一批数学专家、软件专家成立了 MATH WORKS公司,继续 MATLAB 软件的研制和开发,并着力将软件推向市场。1993年,MATH WORKS 公司连续推出了 MATLAB 3.x (第1个Windows版本)、MATLAB 4.0. 1997年,MATH WORKS 公司推出了MATLAB 5.0。2001年,MATH WORKS 公司推出了 MATLAB 6.x。2004年,MATH WORKS公司推出了 MATLAB 7.0。 2.1.2 MATLAB 功能及其应用MATLAB分为总包和若干个工具箱,随着版本的不断升级,它具有越来越强大的数值计算能力,更为卓越的数据可视化能力以及良好的符号计算功能,逐步发展成为各种学科、多种工作平台下功能强大的大型软件,获得广大科技工作者的普遍认可。一方面,MATLAB可以方便实现数值分析、优化分析、数据处理、自动控制、信号处理等领域的数学计算,另一方面,也可以快捷实现计算可视化、图形绘制、场景创建和渲染、图像处理、虚拟现实和地图制作等分析处理工作。在欧美许多高校,MATLAB已经成为线性代数、自动控制理论、概率论与数理统计、数字信号处理、时间序列分析、动态系统仿真等课程的基本教学工具,是攻读本科、研究生学位必须掌握的技能。在国内,这一语言也逐步成为一些大学工科专业学生的重要课程。2.1.3 MATLAB的基本特点1、语言简单易学 MATLAB是一种解释执行的语言,语句采用通用的数学形式,语法规则和一般结构化高级编程语言相差不大,并把编辑、编译、连接、执行功能融为一体,调试程序手段丰富、调试速度快,可以快速排除输入程序时书写、语法等方面的错误,具有一般语言基础的人可以较快掌握。2、代码短小高效 MATLAB将矩阵作为最基本的数据单元、无须预先定义维数。函数是MATLAB中最基本、最重要的组成部分,而MATLAB 将数学问题的许多算法编成库函数,具有能解决很多问题的工具箱,只要熟悉算法的基本特点、函数调用格式和参数具体意义等内容,调用现成函数就可以较快解决自己专业领域很多问题,而不必再花很多时间去实现常规算法,使得所编写的代码文件简单短小、求解专业问题时高效方便。3、计算功能强大 MATLAB 语言具有强大的矩阵数值计算功能、可以方便地处理很多特殊矩阵,利用符号和函数可以对矩阵进行线性代数运算(加减乘除、转置、求逆),适用于大型数值算法的编成实现;工具箱中许多搞性能的数值计算算法,可以解决实际应用中的许多数学问题,尤其是与矩阵计算有关的问题。4、绘图非常方便 MATLAB 语言具有强大的绘图功能,有很多绘图函数命令,可以绘制一般的二维或三维图形(如线形图、条形图、饼图、直方图等),可以绘制工程特性较强的特殊图形(如玫瑰花图、极坐标图等),通过其可视化功能可以绘制一些用于数据分析的图形(如矢量图、等值线图、曲面图、切面图等),还可以生成快照并进行动画制作,使用 MATLAB 句柄图形对象结合绘图函数可以绘制自己最为满意的图形。5、扩充能力强大 可扩展性是 MATLAB的一个重要特点,MATLAB通常包括系统本身定义的大量库函数,用户也可以定义自己的函数、组成自己的工具箱,不仅进行数学运算时可以直接调用,而且库函数名称和用户文件保持一致,用户可以根据需要方便地建立和扩充库函数,方便地解决本领域内的计算问题。MATLAB提供了与Fortran、C/C+语言及一些应用程序(如Excel)的接口,利用MATLAB编译器和运行服务器还可以生成独立的可执行程序,使用户可以混合编程,也可以隐藏算法并避免依赖MATLAB平台环境。6、源程序具有开放性 除了内部函数以外,所有MATLAB的核心文件和工具箱文件都是可读可改的源文件,用户可以通过对源文件的修改以及加入自己的文件构成新的工具箱7、功能强大的工具箱 MATLAB具有的一项重要特色是拥有功能强大的工具箱。MATLAB包括两个部分:核心部分和各种可选的工具箱。核心部分是数百个核心内部函数。其工具箱又可以分成两类:功能性工具箱和学科性工具箱。功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能。功能性工具箱能用于多种学科。而学科性工具箱是专业性比较强的,如 control toolbox、signal processing toolbox、communication toolbox等。这些工具箱都是由该领域内的学术水平很高的专家编写的,所以用户无需编写自己学科范围内的基础程序,而直接进行高、精、尖的研究。8、帮助功能完整 MATLAB采用基于HTML的自述文件,自述文件中不仅介绍了MATLAB语言,还对各种算法的理论基础与算法实现进行了比较详细的说明,并给出了相应的常规实例,帮助功能比较完整。 2.2 MATLAB语言平台简单介绍2.2.1 程序编制步骤1、进入编译平台。在Windows上平台上双击桌面的MATLAB图标或者选择开始程序MATLAB,均可以进入MATLAB编辑平台。2、 编译m文件或者通过命令窗口输入适当的函数命令。3、若使用图形用户界面编程,则设计MATLAB下可视化程序界面(加入控件、对有关属性进行设置等)并编制相应的m文件。4、M文件有命令文件和函数文件两种形式,命令文件的变量均为全局变量且无参数传递,而函数文件一般由function命令开始,变量通常是局部变量,可以传递多个输入输出参数。5、 执行编译过程并修改完善程序2.2.2 使用帮助文件 MATLAB的函数命令很多,全部记住既不需要也不可能,这些函数可以通过以下两种方法学习。1、 使用函数在线帮助。通常使用命令help,比如要知道函数sin的含义、格式、实例,可在命令窗口中键入help sin。对于已知函数命令名称,但不熟悉其具体使用方法的命令来说,使用help命令时,函数命令名称通常都是小写字母。2、 使用全部帮助。在MATLAB的自述文件中给出了MATLAB中的全部帮助,包括MATLAB语言介绍、函数命令含义与算法、工具箱说明、典型算例等。2.3图形用户界面编程过程 此次实验系统的开发我主要使用图形用户界面进行编程操作,图形界面的外观设计的可视化编程过程如下:1、 进入GUI(图形用户界面);2、 添加图形对象;3、 修改菜单属性;4、 修改图形对象属性;5、 编辑回调函数或命令;6、 另存为图形文件;7、 打开图形文件,对有关对象属性进行修改。 第三章 信号与系统课程介绍3.1 信号与系统简介3.1.1 信号与系统课程简介信号与系统课程把具体系统的物理功能抽象为系统的数学模型,经过数学解析,再回到物理实际,以揭示信号与系统得一般特性,是通信与信息系统、交通信息与控制工程、信号与信息处理等学科专业本科生必选的技术基础课程。该课程同样也对我们遥感科学技术专业的学生进一步学习专业知识有很大帮助。本课程主要讨论确定性信号的时域和频域分析,线性时不变系统的描述与特性,以及信号通过线性时不变系统的时域分析与变换域分析。通过本课程的学习,使学生牢固掌握信号与系统的时域、变换域分析的基本原理和基本方法,理解傅里叶变换、拉普拉斯变换、Z变换的数学概念、物理概念与工程概念,掌握利用信号与系统的基本理论与方法分析和解决实际问题的基本方法,可以为学生今后进一步学习数字信号处理、通信原理、数字图像处理、遥感原理、遥感图象处理等课程打下良好的基础。3.1.2 信号与系统课程特点 信号与系统是电子信息类本科学生一门重要的专业基础课、必修课,国内许多高校都将它作为相关专业的研究生入学考试课程. 美国麻省理工学院(MIT) 著名教授A. V. 奥本海姆在他所著教科书Signals and Systems 的前言中指出:“信号与系统课程不仅是工程教学中一门非常基本的课程,而且也成为工科学生在大学教育阶段所修课程中最有得益而又引人入胜和最有用处的一门课”。 该课程一方面以高等数学、工程数学及电路分析基础等课程为基础,同时又是相关专业后继的数字信号处理、通信原理等专业课程的先修课程,在教学环节中起着承上启下的作用.本课程最大特点是理论性强,较为抽象。既有严格的数学理论做支撑,又有现代技术的实践背景。课程中需要掌握的公式、定理和性质多;而且所涉及的数学知识多。因此,在学习中一定要注意数学与物理概念的紧密结合,深刻理解公式、定理和性质等的物理含义。3.1.3 信号与系统课程的基本要求 通过本课程的学习,应理解和掌握信号分析与系统分析的基本方法、理论及应用,为专业课学习打下必要的基础。1.了解信号的时域特性,学会建立一阶、二阶线性时不变连续系统的微分方程;掌握零输入响应、零状态响应和全响应等概念和一阶、二阶电路和计算等;学会计算冲激响应和卷积积分。 2 .掌握周期信号的非周期信号的频谱及其特点,熟悉傅里叶变换及其主要性质,了解连续系统的频域分析方法。 3.掌握单边拉普拉氏变换及其主要性质,熟悉电路和复频域模型及其计算方 法,了解系统函数的概念。 4.了解离散信号及其表示,熟悉 Z变换及Z反变换的基本计算方法。3.2本设计涉及的信号与系统课程内容介绍3.2.1连续时间信号与系统的时域分析 这一部分课程内容主要包括:信号的基本运算与变换、阶跃函数和冲激函数、线性时不变连续系统的响应、线性时不变连续系统的响应、冲激响应与阶跃响应、用卷积积分法求零状态响应等。通过该部分的学习,要求熟悉描述线性时不变系统的数学模型(线性常系数微分方程)并掌握其求解方法;重点掌握零输入响应,零状态响应和全响应的概念;理解阶跃函数和冲激函数,会计算冲激响应和阶跃响应,能计算二个简单函数的卷积积分和利用卷积积分计算零状态响应。3.2.2连续系统的频域分析 这一部分课程内容主要包括: 周期信号的频谐、非周期信号的频谐、傅里叶变换的性质、连续系统的频域分析等。 通过学习这一部分内容我们要掌握如何将连续信号分解为不同频率的正弦信号之和,并在频域研究连续信号激励下,如何求系统的响应。掌握利用傅里叶级数(或变换)将任意信号表示为一系列不同频率的正弦信号之和。深刻理解信号频谱的概念,熟悉掌握傅里叶变换的性质。学会利用叠加原理研究不同频率的正弦信号通过系统求响应。这部分内容的重点是掌握周期信号频谱的特点和傅里叶变换的性质。3.2.3离散时间信号和离散系统分析 这一部分课程内容主要包括: 离散时间信号、离散系统的时域分析、Z变换、离散系统的Z域分析等。 通过本部分的学习,要求了解离散时间信号和离散系统,了解离散时间信号及其运算。理解描述线性时不变离散系统的数学模型是线性常系数差分方程。初步掌握离散系统的时域分析方法,了解Z变换及Z变换的性质。本部分的重点是Z变换及其性质和逆Z变换。3.2.4连续系统的复频域分析 这一部分课程内容主要包括: 拉普拉斯变换、拉普拉斯变换的性质、拉普拉斯逆变换、连续系统的复频域分析、系统模拟与系统函数。 利用拉普拉斯变换(简称拉氏变换)可以把线性常系数微分方程变换为S域的代数方程,从而把求解微分方程的问题变换为求解S域代数方程的问题,这使得利用拉氏变换分析线性时不变系统变得十分方便和有效。 通过学习,要求掌握拉氏变换的性质,电路的S域模型和利用拉氏变换分析线性时不变简单电路(或系统)。本部分重点是拉氏变换性质和利用复频域法分析简单电路。第四章 MATLAB与信号与系统结合的简单实例 利用MATLAB 的数值计算和分析功能,将学生从繁杂的数学运算及推导中解脱出来。 信号与系统课程中有许多复杂的数学运算及推导,例如微积分运算,微分方程求解,差分方程求解,多项式求根,系统零极点计算,部分分式展开,卷积积分,卷积和运算等。 在传统的教学中,这类运算都是由学生经过手算来完成的,既耗费了大量的时间又达不到理想的学习效果. 利用MATLAB 可以让学生学会用科学的运算方法解决问题,从繁重的手工数学运算中解脱出来,将学习重点放在对信号与系统分析的基本概念、方法和原理的理解和运用上.4.1 MATLAB中信号的表示和可视化 在MATLAB中通常可以用两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语言语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。比如对于连续信号f(t)=Sa(t)=sin(t)/t,我们可以用如下两个向量来表示: t=-10:1.5:10 f=sin(t)/t命令执行结果为:t= Columns 1 through 7-10.0000 -8.5000 -7.0000 -5.5000 -4.0000 2.5000 -1.0000Columns 8 through 140.5000 2.0000 3.5000 5.0000 6.5000 8.0000 9.5000f= Columns 1 through 7 -0.0544 0.0939 0.0939 -0.1283 -0.1892 0.2394 0.8415Columns 8 through 140.9589 0.4546 -0.1002 -0.1918 0.0331 0.1237 -0.0079 用上述向量对连续信号进行表示后,就可以用plot命令来绘出该信号的时域波形。Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。MATLAB 命令如下: plot(t,f)title (f(t)=Sa(t)xlabel(t)axis(-10,10,-0.4,1.1)绘制的波形图如图4.1所示: 图4.1 用MATLAB绘制的波形图如果把时间间隔(例如取0.02时) 取小,就可以得到更光滑的近似波形。如图4.2所示: 图4.2 修改时间间隔后的波形图这样,我们不费什么力气就绘制出各种信号波形,比起通过手工来绘制图形既省去了大量复杂计算,绘制出来的图形也更加精确。这种简单实用的可视化图形对学生更好理解信号与系统相关概念大有裨益。 4.2信号与系统与 MATLAB结合其他例子 运用MATLAB语言可以较方便地绘出系统的冲激响应和阶跃响应的波形。具体的示例如下:现有二阶连续系统,其微分方程如下:要求其冲击响应,如果采用手工推导将会非常复杂而且很容易出错;如果采用MATLAB , 用户只需先建模,然后编制相应程序执行后就能得到结果,既方便又不容易出错。MATLAB语言的代码如下:其中运用了冲激函数impulse()和阶跃函数step(),具体执行相关程序的结果图如图4.3所示: 图4.3 冲击响应和阶跃响应的波形图第五章 实验系统的设计过程和主要代码5.1 实验系统的设计过程5.1.1 创建图形用户界面 图形用户界面,简称GUI,是英文 Graphic User Interface 的缩写。其创建方法是:使用菜单File.New.GUI或者在命令窗口使用命令guide,弹出如下图所示的对话框,在该对话框内可以创建图形用户界面或者通过Browse打开一个已有用户界面。在创建新的图形用户界面时,可以进行适当的设置,图5.1中的Blank(默认),GUI with Unicontrols,GUI with Axes and Menu,Modal Question Dialog 分别为图形用户界面的默认设置、含有控件、含有坐标系、含有问题对话框。在选择了一个已有图形界面或设置完成后。单击OK,将得到已有界面或者新界面。 图5.1 GUI开始界面5.1.2在图形界面上添加图形对象MATLAB中使用图形用户界面进行编程时,经常会碰到不同的图形对象,这些对象主要包括窗口对象、菜单对象、对话框对象、控件对象和坐标轴对象。下面我仅举窗口对象有关属性的设置方法为例。1、 窗口对象属性的可视化设计窗口的基本属性包括位置(Position)、窗口编号(Number Title)、标题栏(Name)和菜单(Menubar)。分别简介如下:Position属性:设置窗口位置,它为1*4的向量,前后两个数值分别为窗口矩形左下角及右上角的横坐标与纵坐标数值 Name属性:窗口标题栏对应的字符串。 NumberTitle属性:窗口编号选项,Menubar属性:菜单栏属性窗口还有颜色、调整和可见性等属性。2、 窗口对象属性程序设计创建方法: Set(对象句柄,属性1,属性值1,属性2,属性值2,)获取方法: Get (对象句柄,属性1,属性值1,属性2,属性值2,)5.1.3 GUI编程实现过程MATLAB编写GUI程序也很方便,关键是需要之前准备好界面位置参数。其原则尽量满足简单性,一致性和友好性。其具体步骤有 分析界面所要求实现的主要功能,明确设计任务。例如,单击某一按钮则运行相应的模块,或是将输入栏的参数传递给相应的功能模块。 在MATLAB中编写GUI程序主要涉及到的命令(其他的GUI命令由于本次设计没有用到,故略)有标准图形窗口菜单设置Figure 用以创建标准菜单的图形窗Set(gcf,menubar,none); 用以隐藏图形窗口的标准菜单Set(gcf,menubar,figure) 用以恢复图形窗口的标准菜单Hm=uimenu(H_parent,PropertyName,PropertyValue,) 用以自己订制用户菜单用户控件Hc=uicontrol(H_parent,PN,PV) 控件制作函数用户控件类包括pushbutton,radiobutton等除了直接编程制作GUI界面外还可以借助命令guide进行编写,guide 是一个强大的交互式用户界面制作工具,可以可视化地调整各个窗口的属性,下图是其运行情况: 图5.2 试验系统主界面设计图然后保存为fig文件,就完成了主界面的设计工作。当然,除了有fig文件外,还需要在相应的.m文件里面定义组件行为,这里给出的源程序为如下:function varargout = Main(varargin)% MAIN Application M-file for Main.fig% FIG = MAIN launch Main GUI.% MAIN(callback_name, .) invoke the named callback.if nargin = 0 % LAUNCH GUIfig = openfig(mfilename,reuse);% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig);guidata(fig, handles);if nargout 0varargout1 = fig;endelseif ischar(varargin1) % INVOKE NAMED SUBFUNCTION OR CALLBACKtryif (nargout)varargout1:nargout = feval(varargin:); % FEVAL switchyardelsefeval(varargin:); % FEVAL switchyardendcatchdisp(lasterr);endend%| ABOUT CALLBACKS:%| GUIDE automatically appends subfunction prototypes to this file, and %| sets objects callback properties to call them through the FEVAL %| switchyard above. This comment describes that mechanism.%|%| Each callback subfunction declaration has the following form:%| (H, EVENTDATA, HANDLES, VARARGIN)%|%| The subfunction name is composed using the objects Tag and the %| callback type separated by _, e.g. slider2_Callback,%| figure1_CloseRequestFcn, axis1_ButtondownFcn.%|%| H is the callback objects handle (obtained using GCBO).%|%| EVENTDATA is empty, but reserved for future use.%|%| HANDLES is a structure containing handles of components in GUI using%| tags as fieldnames, e.g. handles.figure1, handles.slider2. This%| structure is created at GUI startup using GUIHANDLES and stored in%| the figures application data using GUIDATA. A copy of the structure%| is passed to each callback. You can store additional information in%| this structure at GUI startup, and you can change the structure%| during callbacks. Call guidata(h, handles) after changing your%| copy to replace the stored original so that subsequent callbacks see%| the updates. Type help guihandles and help guidata for more%| information.%|%| VARARGIN contains any extra arguments you have passed to the%| callback. Specify the extra arguments by editing the callback%| property in the inspector. By default, GUIDE sets the property to:%| (, gcbo, , guidata(gcbo)%| Add any extra arguments after the last argument, before the final%| closing parenthesis.% function varargout = pushbutton1_Callback(h, eventdata, handles, varargin)close% function varargout = pushbutton2_Callback(h, eventdata, handles, varargin)closepage1% function varargout = pushbutton4_Callback(h, eventdata, handles, varargin)% function varargout = SSExpe_Callback(h, eventdata, handles, varargin)% function varargout = pushbutton2_ButtonDownFcn(h, eventdata, handles, varargin)% function varargout = SSEx_Callback(h, eventdata, handles, varargin)其中阴影部分是自己定义的组件行为,而非阴影部分则是MATLAB自动生成的语句,当然%后面的都是注释语句,从中可以看到用MATLAB编写GUI程序确实比较简单5.1.4 m文件的编写前面已经提及MATLAB是一个强大的数学处理工具,可以方便的处理大规模复杂运算。而实现这种运算的一个不可或缺的条件是其方便的脚本文件,这也是本章介绍的主要内容。MATLAB主要用到的脚本文件被命名为.m文件,其特点有4个:1. 该文件的指令形式和前后位置,与解决同一问题时在指令窗口中输入的那组指令没有任何区别;2. MATLAB运行此脚本时,仅简单地从文件中读取每条指令,送到MATLAB中执行;3. 同指令窗直接运行的指令一样,脚本文件的变量都是驻留在其基本内存空间中;4. 文件名的扩展名为 “.m “.M文件,实际上是就是一个普通文本文件,其中包含了MATLAB指令,而MATLAB指令由于与C语言相类似,所以易于上手,这也是MATLAB的易用性的体现。下面将介绍一个m文件例子,也可以从中体味MATLAB语言的风格例:实现离散信号移位功能1 functiony,n=sigshif(x,m,n0)2 n=m+n0;3 y=x;说明:这个例子给出了一个信号移位功能的函数实现。第一行定义函数,第二行实现具体功能,即将X系列进行位移;并传入中间变量Y第三行则是使中间变量传递给X,即实现了X的序列移位从中不难看出m脚本文件和m函数文件很类似,都是类c语言风格的表达式; 5.1.5 mdl文件的编写Mdl文件,也是本次毕业设计的重点,它提供了更加简便的方法创建信号处理系统。Mdl文件的建立必须依赖SIMULINK组件。SIMULINK的主要优点在于:1. 适应面广。包含了,线形,非线性系统;离散,连续,及混合系统;单任务,多任务离散事件系统。2. 结构和流程清晰。采用方框图的形式呈现,又采用分层结构,可以同时适应两种不同的结构化设计方法。3. 仿真精细,切于实际。提供大量特种函数模块。仅需要进行参数定制,就可实现期望的效果 图5.3 典型SIMULINK应用窗口,左侧是方框图模型库,右侧是新建系统的空白文件 SIMULINK的使用方法很简单,从左侧窗口中选择合适的模型方框图模块,拖放到右侧窗口中,并可以对模块进行缩放和旋转,不同组件之间的连接也很方便,只要拖拉,就可以快速实现某种功能。 图5.4 SIMULINK使用例图利用SIMULINK,其他的更加复杂的设计都不难实现。这次设计,为了突出MATLAB的这一特性,我主要搭建了实现如下功能的系统:1. 实现了信号抽样的系统。根据抽样定理,一定条件下的信号可以通过其等间隔上的样本(Sample)来表示。或者通过样本值来对数据压缩恢复。同样,抽样定理也是由连续系统向离散系统过渡的桥梁,在信号与系统教学中占有很大的地位,本次设计可以调整的参数主要有,输入信号的调整,例如方波信号,正弦波信号;还有抽样频率的调整。2. 信号的频谱分析。所谓频谱分析,就是指时域信号的时域表示,转换到频域的频率分布,其变换采用的是傅立叶变换,这是一种非常方便的信号表示方法,理解这种方法,在信号与系统教学中,也是很重要的。本次设计中的可调(可选)参数为信号的种类,包括连续/离散信号的频率分析。3. LTI系统的特性分析。线性时不变系统(LTI系统)是信号与系统分析的重点,理解线性时不变系统的特性,理解相位失真和幅度失真的特点,也是本科信号与系统教学所需要的。这部分包括两个选项,分别是单位冲激函数仿真和时序函数仿真4. 滤波器设计。滤波就是从有噪信号中获得想要的信号的过程。而滤波器就是实现这个过程的器件。设计一个滤波器,也是学习信号与系统的一部分,这次设计中,可以针对不同信号选择不同滤波器(模拟滤波器/数字滤波器),及滤波器类型(巴特沃斯/切比雪夫/椭圆)。下面,给出这些模块的构成:1.信号抽样系统,见图5.5:图5.5 信号抽样系统框图 图5.6 频谱分析图可以看到,本系统不仅包含了抽样过程,即由输入端的正弦信号,得到输出端的以正弦波为包络的脉冲信号,也包含了信号重建过程,即由以正弦波为包络的脉冲信号通过低通滤波,通过后面的低通滤波器,重建信号,但由于滤波器的延时效应,当然不能完全再现原信号。下面是各个部分所得到的信号图。图5.7 所用的抽样脉冲信号图5.8 输入信号(正弦波) 图5.9 抽样后的信号(以正弦波为包络) 图5.10 还原的信号图从给出的运行示意图中可以看到,原信号被完美的抽样了,达到了设计目的。当然,这里给出正弦波信号只是一种选择,如果在设计中加入信号的选择,会给人跟加多的直观感受,但由于时间关系,没有在这里深入下去。但由于SIMULINK的便捷性,修改信号发生器就可以达到扩展目的。5.2 系统设计过程详细介绍在此小节中我将对系统设计的流程进行一个详细的介绍,以函数基本性质模块实现为例。1、 创建用户图形界面首先打开MATLAB,选择File-New-GUI,新建一个空白的用户图形界面,如图5.11所示: 图5.11 空白用户图形界面接着在组件面板上选择需要的控件,放置在界面合适的位置上,再双击该按钮,打开属性编辑器,检查和修改图形对象的某些属性。如在界面上添加“信号相加”按钮。如图5.12,图5.13,图5.14所示: 图5.12 用户图形界面设计示意图 图5.13 属性编辑器 图5.14 用户图形界面设计示意图 图5.15 用户图形界面设计示意图2、依次设计完成所有所需要的控件后,分别点击相应按钮,添加回调函数。也可以直接在文件编辑器中添加回调函数,调制后即可实现相应功能。 图5.16 文件编辑器3、函数性质模块相关的“信号与系统”原理和MATLAB命令正弦信号:一般形式为其中A为辐值;为基波频率,一般形式应该为:,且为正弦波的周期;而为初相位。运用本课件所绘的具体示例图形如下图所示: 图5.17 正弦波示意图上图中的A=5,等于1,初相为零。本课件中具体的绘图代码如下: t = 0:0.01*pi:6*pi; y1 = a1*sin(f1*t+s1);其中t为时刻值;a1为辐值,此时为5;f1为信号的频率,此时为1;s1为信号的初象,此时为0;方波信号:运用本课件所绘的具体示例图形如下图所示: 图5.18 方波示意图本课件中具体的描图代码如下:t = 0:0.01*pi:6*pi; y1 = a1*square(f1*t+s1);其中square函数的一般特性如下: 锯齿波信号:运用本课件所绘的具体示例图形如下图所示: 图5.19 锯齿波示意图本课件中具体的描图代码如下: t = 0:0.01*pi:6*pi; y1 = a1*sawtooth(f1*t+s1);阶跃信号:运用本课件所绘的具体示例图形如下图所示: 图5.20 阶跃信号示意图本课件中具体的描图代码如下: t = -10:0.01:10; y1 = a1*(t-s1) = 0;其中阶越信号的一般特性如下: 脉冲信号:运用本课件所绘的具体示例图形如下图所示: 图5.21 脉冲信号示意图本课件中具体的描图代码如下:t = -10:0.01:10; y1 = a1*(t-s1) = 0;其中阶越信号的一般特性如下: 信号相加的基本原理为:现有原始的两信号:。两信号相加即为:信号相加对应的按钮对应的函数为:function varargout = pushbutton5_Callback(h, eventdata, handles, varargin)a1 = str2double(get(handles.edit1,String);%信号一的辐度值f1 = str2double(get(handles.edit2,String);%信号一的频率值s1 = str2double(get(handles.edit3,String);%信号一的相位a2 = str2double(get(handles.edit4,String);%信号二的辐度值f2 = str2double(get(handles.edit5,String);%信号二的频率值s2 = str2double(get(handles.edit6,String);%信号二的相位val1 = get(handles.popupmenu1,Value);%输入信号一的信息获取switch val1case 1 t = 0:0.01*pi:6*pi;%输入信号一为正弦信号 y1 = a1*sin(f1*t+s1);case 2 t = 0:0.01*pi:6*pi;%输入信号一为方波信号 y1 = a1*square(f1*t+s1);case 3 t = 0:0.01*pi:6*pi;%输入信号一为锯齿波信号 y1 = a1*sawtooth(f1*t+s1);case 4 t = -10:0.01:10;%输入信号一为阶跃信号 y1 = a1*(t-s1) = 0;case 5 t = -10:0.01:10;%输入信号一为脉冲信号 y1 = a1*(t-s1) = 0;end val2 = get(handles.popupmenu2,Value);switch val2case 1 t = 0:0.01*pi:6*pi; %输入信号二为正弦信号 y2 = a2*sin(f2*t+s2);case 2 t = 0:0.01*pi:6*pi; %输入信号二为方波信号 y2 = a2*square(f2*t+s2);case 3 t = 0:0.01*pi:6*pi; %输入信号二为锯齿波信号 y2 = a2*sawtooth(f2*t+s2);case 4 t = -10:0.01:10; %输入信号二为阶跃信号 y2 = a2*(t-s2) = 0;case 5 t = -10:0.01:10; %输入信号二为脉冲信号 y2 = a2*(t-s2) = 0;end axes(handles.axes1) % Select the proper axes%绘制两信号原图plot(t,y1,-r,t,y2,-b)set(handles.axes1,XMinorTick,on)grid on y = y1 + y2;%两信号相加 axes(handles.axes2) % Select the proper axesplot(t,y)set(handles.axes2,XMinorTick,on)grid on现运用上述程序对正弦信号与方法信号进行相加,具体的结果如下(下图中位于图中底部的图即为结果图,上面的图即为两个原始信号): 图5.22 信号相加示意图信号移位的基本原理为:现有信号,自变量按变换,以为横坐标画出原信号的波形。一般而言,若,则将使信号波形左移;,信号波形右移。根据上述原理编写如下MATLAB代码:function varargout = pushbutton6_Callback(h, eventdata, handles, varargin)a1 = str2double(get(handles.edit1,String);%信号一的辐度值f1 = str2double(get(handles.edit2,String);%信号一的频率值s1 = str2double(get(handles.edit3,String);%信号一的相位值a2 = str2double(get(handles.edit4,String);%信号二的辐度值f2 = str2double(get(handles.edit5,String);%信号二的频率值s2 = str2double(get(handles.edit6,String);%信号二的相位值n1 = str2double(get(handles.edit7,String);%信号一的右移值n2 = str2double(get(handles.edit8,String);%信号二的右移值val1 = get(handles.popupmenu1,Value);%绘制信号一switch val1case 1 t1 = 0:0.01*pi:6*pi;%信号一为正弦信号 y1 = a1*sin(f1*t1+s1);case 2 t1 = 0:0.01*pi:6*pi;%信号一为方波信号 y1 = a1*square(f1*t1+s1);case 3 t1 = 0:0.01*pi:6*pi;%信号一为锯齿波信号 y1 = a1*sawtooth(f1*t1+s1);case 4 t1 = -10:0.01:10;信号一为阶跃信号 y1 = a1*(t1-s1) = 0;case 5 t1 = -10:0.01:10;信号一为脉冲信号 y1 = a1*(t1-s1) = 0;otherwise y1 = 0;endval2 = get(handles.popupmenu2,Value);%绘制信号二switch val2case 1 t2 = 0:0.01*pi:6*pi;%信号二为正弦信号 y2 = a2*sin(f2*t2+s2);case 2 t2 = 0:0.01*pi:6*pi;%信号二为方波信号 y2 = a2*square(f2*t2+s2);case 3 t2 = 0:0.01*pi:6*pi;%信号二为锯齿波信号 y2 = a2*sawtooth(f2*t2+s2);case 4 t2 = -10:0.01:10;%信号二为阶跃信号 y2 = a2*(t2-s2) = 0;case 5 t2 = -10:0.01:10;信号二为脉冲信号 y2 = a2*(t2-s2) = 0;otherwise y2 = 0;end %在对话框的上部绘制原始信号图axes(handles.axes1) % Select the proper axesplot(t1,y1,-r,t2,y2,-b)set(handles.axes1,XMinorTick,on)grid on %sigshif函数为相位转换函数,即生成相位右移后的新信号y1,x1=sigshif(y1,t1,n1);y2,x2=sigshif(y2,t2,n2); %在对话框的下部绘制已经移位的信号图axes(handles.axes2) % Select the proper axesplot(x1,y1,-r,x2,y2,-b)set(handles.axes2,XMinorTick,on)grid on第六章 实验系统各模块简单介绍图6.1:该试验
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。