目录

第1章 绪论 1

1.1 研究背景 1

1.2 研究意义 1

1.3 设计内容 2

第2 章 设计平台简介 3

2.1 MATLAB简介 3

2.1.1 MATLAB的基本介绍 3

2.1.3 关于GUI界面 5

2.2 MATLAB与《信号与系统》结合简介 5

2.3 《信号与系统》仿真系统总体设计 6

第3章 系统设计 7

3.1 模块设计 7

3.2 设计步骤 7

第4章 界面设计 12

4.1 系统总界面 12

4.2 子界面的设计 12

第5章 系统主要功能 14

5.1 连续时间信号时域分析 14

5.2 连续系统时域分析 20

5.3 离散系统时域分析 22

5.4 傅里叶变换 24

第6章 总结 27

参考文献 28

致谢 29


摘要

“信号与系统”课程是一门实用性较强、涉及面较广的专业基础性课程,是电子信息类专业本科学生的必修课程,也是电子信息类专业硕士研究生入学必考的课程。该课程是将学生从电路分析的知识领域引入信号处理与传输领域的关键性课程,对后续专业课起着承上启下的作用。该课程的基本方法和理论大量应用于计算机信息处理的各个领域,特别是通信、数字语音处理、数字图像处理、数字信号分析等领域,应用更为广泛。因此,该课程具有重要的意义。

长期以来,“信号与系统”课程一直采用黑板式的单一教学方式,学生仅依靠做习题来巩固和理解教学内容,对课程中大量的应用性较强的内容不能实际动手设计、调试、分析,严重影响和制约了教学效果。由于黑板式教学,课程中大量信号分析结果缺乏可视化的直观表现,学生将大量的精力和时间用于繁杂的手工数学运算,而未真正理解所得到的结果。因此,为了把学生从繁琐的数学运算中解脱出来,从而将更多的时间用于对信号与线性系统的基本分析方法和应用的理解与思考。该课程急需进行教学方法的改革,即实现在实验环境中,以计算机为辅助教学手段,用信号分析的软件帮助学生完成数值计算、信号与系统分析的可视化建模及仿真调试。Mathworks公司推出的MATLAB开发平台经过十多年的发展,已经成为科技界最流行的应用软件,它具有高效率的数值计算及符号计算功能、完备的图形处理功能、友好的用户界面及接近数学表达式的自然化语言和功能丰富的应用工具箱。由于MATLAB具有上述特点,为开发“信号与系统”计算机辅助教学(CAI)软件提供了强有力的工具。

本文概述了信号仿真系统的需求、总体结构、基本功能。重点介绍了利用matlab软件设计实现信号仿真系统的基本原理及功能,以及利用matlab软件提供的图形用户界面(GUI)设计具有人机交互、界面友好的用户界面。本文采用matlab的图形用户界面设计功能,开发出了各个实验界面;在该实验软件中,集成了信号处理中的多个实验,应用效果良好。本系统是一种演示型软件,用可视化的仿真工具,以图形的动态仿真的方式演示部分基本信号的传输波形和变换,使我们直观、感性的了解和掌握信号与系统的基本知识。


关键字:信号系统课程,MATLAB,用户图形界面,实验软件


第1章 绪论

1.1 研究背景

随着计算机的普及应用以及科技的发达,现代社会是信息的社会,对信息的研究变得非常重要,而对信号波形的模拟可以方便研究人员研究。以前的信号模拟是用硬件,对仪器和实验室的要求较高,不便于广泛应用,而且信号处理具有内容繁多、概念抽象、设计复杂等特点,学生在学习时常常会感到枯燥,难以理解和掌握。硬件模拟信号波形对设备要求较高,有时候受仪器或操作不对等因素的影响将无法正确直观的看到波形,参数改变时不能立即看到波形变化。而用软件的形式对信号波形进行仿真有着界面可视性强,操作简单方便;便于数据修改,文件保存,实验效率高,实验内容丰富,结果直观易懂,便于分析;而且系统容易扩展新的实验项目。所以仿真很有必要而且急为迫切。

1.2 研究意义

MATLAB软件是由美国Math works公司推出的用于数值计算和图形处理的科学计算系统环境。集高效的数值分析、完备的信号和图形处理、功能丰富的应用工具箱为一体,构成了一个方便且界面友好的用户环境,是一种适应多种硬件平台的数学计算工具。MATLAB的GUI是专门用于图形用户界面的快速开发环境,还具有信号处理软件包,可以方便地进行信号与系统分析的数值计算,可视化建模及系统设计,仿真调试等。MATLAB已成为很多大学重要的教学工具,对数值线性代数以及其他一些高等应用数学课程进行辅助教学的有益工具。在工科教学中,MATLAB 也被用来解决一些实际课题和数学模型问题,如自动控制理论、统计、数字信号处理(时间序列分拆)等。

长期以来,《信号与系统》课程一直采用单一的理论教学方式,同学们依靠做习题来巩固和理解教学内容,由于本课程数学公式推导较多,概念抽象,常需画各种波形,使得《信号与系统》这么课程的教学很困难。Matlab作为编程语言和可视化工具 ,不但可以显示信号分析与系统设计的动态仿真过程,给人以直观的感受,而且在教学中提供了大量的实例,同时为同学们留下了动在实验中同学们可以改变信号、模块、仿真子系统等的参数,观察信号与系统的相应变化。以Matlab平台开发的系统为学生提供了“信号分析”、“信号抽样”、“系统仿真”、“系统特性”、“滤波器设计”及“傅立叶变换”等实验模块 ,使原先课本中难以观察到的现象以及繁琐的设计计算,都能形象而全面的演示,激发学生的学习兴趣,使同学们对所学的书本知识会有感性的认识和直观的验证,加深对“信号与系统”原理的理解。

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

1.3 设计内容

本课题主要内容是运用MATLAB,设计了“连续时间信号时域分析”、“系统时域分析”、“傅里叶变换”、“连续系统S域分析”、“离散系统z域分析”几大块仿真设计。“信号时域分析”主要是信号的时域波形、时域变换、时域运算。在“系统的分析”中,首先详细介绍了系统的基本概念,包括系统的分类、系统的基本结构、系统的特性。其次,着重分析了连续信号系统的时域特性,包括零输入响应和零状态响应、阶跃响应和冲击响应。



第2 章 设计平台简介

2.1 MATLAB简介

2.1.1 MATLAB的基本介绍

MATLAB(矩阵实验室)是MATrix LABoratory的缩写,是一款由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。

  尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。另外还有一个配套软件包Simulink,提供了一个可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。

MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
2.1.2 MATLAB特点优势

1.编程环境

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。MATLAB的用户界面越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

2.简单易学

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

3.处理能力强

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

4.图形处理

MATLAB具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能方面更加完善,而且对于图形的光照处理、色度处理以及四维数据的表现等,MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

  1. 模块集合工具箱

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯等。

6.可扩展性强

MATLAB由一套程序扩展系统和工具箱,具有良好的可扩展性。工具箱是MATLAB函数的子程序库,每个工具箱都有为某个学科领域的应用而制定的,MATLAB每年都会增加一些新的工具箱。

2.1.3 关于GUI界面

图形用户界面(GUI)是用户与计算机程序之间的交互方式,是用户与计算机进行信息交流的方式。计算机在屏幕显示图形和文本,若有扬声器还可产生声音。用户界面设定了如何观看和如何感知计算机、操作系统或应用程序。通常,多是根据悦目的结构和用户界面功能的有效性来选择计算机或程序。图形用户界面或GUI是包含图形对象,如:窗口、图标、菜单和文本的用户界面。以某种方式选择或激活这些对象,通常引起动作或发生变化。最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。按下鼠标按钮,标志着对象的选择或其它动作。

2.2 MATLAB与《信号与系统》结合简介

MATLAB的出现给《信号与系统》课程的计算机辅助教学带来了便捷。利用MATLAB软件提供的强大的数值运算函数库,可以将课堂教学从繁重的运算与推导过程中解脱出来,让学生学会用计算机辅助分析方法解决问题,帮助学生将视线从数学计算的过程转向计算结果所对应的物理含义,将学习重点放在对基本概念的分析、理解和应上,提高教学效果。

信号分析通过研究信号的描述、运算、特性以及信号发生某些变化时其特性相应的变化,来揭示信号自身的时域特性、频域特性等。信号分析的主要途径是研究信号的分解,即将信号分解为某些基本信号的线性组合,通过对这些基本信号单元在时域和频域特性的分析来达到了解信号特性的目的。信号的分解可以在时域、频域或变换域中进行,分别用到信号分析的时域方法、频域方法和变换域方法。

系统分析的主要任务是分析系统对指定激励所产生的影响。其分析过程主要包括建立系统模型,根据模型建立系统的方程,求解出系统的响应,必要时对解得的结果给出物理解释。系统分析是系统综合与系统诊断的基础。

LTI系统各种分析方法的理论基础是信号的分解特性与系统的线性、时不变特性,其出发点是:激励信号可以分解为若干基础信号单元的线性组合;系统对激励所产生的零状态响应是系统对各基本信号单元分别激励下响应的叠加。

2.3 《信号与系统》仿真系统总体设计


基于matlab的信号与系统仿真

图2-1 “信号与系统”总体框图


第3章 系统设计

3.1 模块设计

本设计利用MATLAB的GUIDE工具箱设计并实现了信号与系统的图形界面GUI、设计主界面、设计子界面。界面以按钮、静态文本、编辑框和坐标轴等界面构成,可以方便使用,该系统包含的内容丰富、结果直观。实验主界面模块根据信号与系统重点选择了几个典型内容进行设计。如图3-1所示:


v2-608b18e29f3b60ddad849444b11f8a2e_b.jpg


图3-1 信号与系统仿真设计总界面

首先进入总界面在每个模块的窗口上分别设置了设计内容与结果,我们可以通过总界面了解相应的知识,在每个子界面上也可以输入参数观察其变化,有的是把几个相似的内容仿真一个界面上,可以比较不同之处。

3.2 设计步骤

本设计的界面布局是先设计GUI总界面,然后设计子界面,再在子界面上设置按钮、坐标轴、文本框等一系列控件,最后借助于callback函数调用相应的程序。在函数调用程序的设计中先编写各个子界面中的回调函数下的程序,编写GUI界面的回调函数下的程序。

  1. 用MATLAB的GUIDE提供的创建图形界面工具,设计整个系统的GUI总界面、设计子界面。
  2. 编写子界面的各个控件对象的回调函数下的程序,实现各个控件的控制功能,直接通过界面上的控件实现对结果的分析。
  3. 编写GUI总界面的回调函数程序,把所有的子界面集合在总界面中,通过总界面可以进入任意子界面并可以进行操作。

3.3 创建GUI

3.3.1 创建方式

创建MATLAB GUI界面有三种方式:第一种,在命令行输入:>> guide;第二种,单击MATLAB主窗口的 (GUIDE)按钮;第三种,单击MATLAB主窗口【Start】按钮,出现弹出菜单,在主程序组【MATLAB】中选择“GUIDE(GUI Builder)”选择项。界面如图3-2所示:


v2-1c8032a8b109e61fcef564ad2a4963af_b.jpg


图3-2 GUI创建界面

新建并且保存后会生成fig文件和吗m文件。自动生成的M文件,控制GUI对用户操作的响应,包含运行GUI所需要的所有代码。GUIDE自动生成M文件的框架,用户在该框架下编写GUI组件的回调函数。M文件由一系列子函数构成,包含主函数、Opening函数、Output函数和回调函数。主函数不能修改,否则容易导致GUI界面初始化失败。在启动对话框中选择打开已经存在的GUI时,可通过浏览的方式找到本地磁盘上的用户fig文件,或在已打开过的列表中直接选择要打开的文件。

3.3.2 界面控件

1.界面控件

(1)静态文本(Static Text) (2)编辑框(Edit Text)控件
(3)列表框(Listbox)控件 (4)滚动条(Slider)控件
(5)按钮(Push Button)控件 (6)开关按钮(Toggle Button)控件
(7)单选按钮(Radio Button)控件 (8)按钮组(Button Group)控件
(9)检查框(Check Box)控件 (10)列表框(Listbox)控件
(11)弹出式菜单(Popup Menu)控件 (12)坐标轴(Axes)控件
(13)面板(Panel)控件

2.控件属性

(1)Enable属性: 表示此控件的使能状态

(2)Style:控件对象类型。
(3)Tag:控件表示(用户定义)。
(4)TooltipString属性:提示信息显示。鼠标指针位于此控件上时,显示提示信息。
(5)UserData:用户指定数据。
(6)Position:控件对象的尺寸和位置。
(7)Units:设置控件的位置及大小的单位
(8)有关字体的属性,如 FontAngle, FontName等。
3.控件回调函数的执行
(1)BusyAction:处理回调函数的中断。有两种选项:即Cancel:取消中断事件,queue:排队(默认设置)。
(2)ButtonDownFcn属性:按钮按下时的处理函数。
(3)CallBack属性:是连接程序界面整个程序系统的实质性功能的纽带。该属性值应该为一个可以直接求值的字符串,在该对象被选中和改变时,系统将自动地对字符串进行求值。
(4)CreateFcn:在对象产生过程中执行的回调函数。
(5)DeleteFcn:删除对象过程中执行的回调函数。
(6)Interruptible属性:指定当前的回调函数在执行时是否允许中断,去执行其他的函数。
3.3.3 回调函数CallBack

1.CallBack基本介绍

每个控件都有几种回调函数,右键选中的控件一般会有如下菜单:然后就可以跳转到相应的 Editor中编辑代码,GUIDE会自动生成相应的函数体,函数名,名称一般是控件 Tag+ Call类型名参数有三个( hObject, eventdata, handles),其中hObject为发生事件的源控件,eventdata为事件数据结构,handles为传入的对象句柄,CreateFcn 是在控件对象创建的时候发生(一般为初始化样式,颜色,初始值等),DeleteFcn 是在空间对象被清除的时候发生,ButtonDownFcn和KeyPressFcn分别为鼠标点击和按键事件Callback,CallBack为一般回调函数,因不同的控件而已异。如图3-3所示:


v2-2bf2735f489672d2f8e66f101cdd5f58_b.jpg


图3-3 控件callback回调函数

若要在M文件编辑器里编写Callback程序,那么属性检查器里的Callback则不能作任何修改,默认为%automatic,也就是当用户将GUI存储并打开M文件编辑器后,这个Callback就会自动指向M文件编辑器里的Callback函数。

2.CallBack基本操作

Callback程序首先要在图形界面上获得各各控件的值,然后进行一系列计算过程,最后将计算结果用图形的方式或字符串的方式显示在图形界面上。

(1)通过以下方式得到按钮pushbutton1的句柄:

h1=handles.pushbutton1 或 h1=findobj('tag','pushbutton1')

(2)如果已知某一编辑框的句柄为hh(得到方法同上),从该编辑框获取输入内容,用以下语句:

str = get(hh,'String');

(3)如果编辑框输入的是数值,要参与后面的程序计算,则需要对数据类型进行转换,即:

instr = str2num(get(hh,'String'));

(4)还有一种情况,如果获取当前控件的值,用以下方法即可:

instr = str2double(get(hObject,'String')); %从编辑框获取输入值

(5)或不用事先得到控件的句柄,直接通过结构数组获得编辑框控件edit1的值:

instr = str2double(get(handles.edit1,'String')); %从编辑框获取输入值

(6)将计算结果显示在编辑框edit2中,用以下方法:

set(handles.edit2,'String',str)); %其中str是字符串变量。

(7)如果计算结果是数值型,则要进行转换:

str=num2str(n); %n为数值型变量

(8)如果要将计算结果绘出图形,并绘制在界面上预先定义的坐标轴axes1中,则在绘图命令前加上以下语句,使axes1成为当前坐标轴:

axes(handles.axes1) % handles.axes1即为坐标轴axes1的句柄



第4章 界面设计

MATLAB将GUI支持的用户集成在GUIDE工具箱里,本设计采用GUI界面向导进行界面设计 。通过GUI提供的很多功能如界面外观、属性风格及控制方式等的设置方法,编写M文件,控制组件作相应变化。此设计主要有一个总界面和六个子模块组成,其中每个子模块中包含相应的子界面。

4.1 系统总界面

“信号与系统”仿真的总界面如图4-1所示,用鼠标单击每个按钮,进入相应章节模块。在GUIDE的编辑界面中,在空白处双击或者单击右键选择property inspector,出现属性设置对话框,可以对GUI的属性风格进行个性化。Color选项可以改变背景颜色,本设计使用的是紫色。Position选项可以对界面窗口的大小进行调整,窗口的大小可以通过设置width和height进行调整,也可以用鼠标拖拽窗口,用鼠标拖拽窗口设置比较方便快捷,也更容易设置适合于窗口大小的GUI界面。


v2-43ddacea6e94242a2709bfe0fe792599_b.jpg


图4-1 设计总界面

4.2 子界面的设计

子界面的设计主要由各个控件的属性,并加入相应的回调函数callback实现其相应的功能。如图4-2所示,点击Menu Editor中的New Menu会出现Untitled1,在其上点击出现Menu Properties,修改其中的Label选项,命名为“绘制图形:连续时间信号”。


v2-085fcf8226d22f5ab529f6ba937ce94c_b.jpg


图4-2 设计子界面

点击Axes按钮,在GUIDE界面空白处点击,会出现一个坐标轴图标,用鼠标拖拽到你想要的大小与位置。在此图标上点击右键,在Viwe Callback选项中选择buttondownfcn,把单位阶跃信号的程序写在下面。选择Edit text按钮,在空白处点击左键,把出现在窗口中的Edit文本框拖拽到适当大小,单击右键或双击左键,设置背景颜色“Backgroundcolor”、字体颜色“Foregroundcolor”字体大小“Fontsize”等等的属性。本设计的字体大小一般设置为18,有的会适当调整。“下一部分”的设置:在Pushbutton上双击左键将“String”选项改为“下一部分”,在这个按钮的回调函数view Callback中的Callback选项下写入“close xinhaoshiyu2”调用下一部分程序,就可实现单击此按钮进入下一界面。



第5章 系统主要功能

5.1 连续时间信号时域分析

连续信号或称连续时间信号是指定义在实数域的信号,自变量(一般是时间)的取值连续,除若干不连续点之外对于任意时间值都可以给出确定的函数值。若信号的幅值和自变量均连续,函数的波形都是具有平滑曲线的形状,则称为模拟信号。根据实数的性质,时间参数的连续性意味着信号的值在时间的任意点均有定义。作为物理信号,连续信号的值必然有一定的范围,任何模拟信号都是连续信号。

5.1.1 绘制图形

1.连续时间信号的时域波形,如图5-1所示:


v2-085fcf8226d22f5ab529f6ba937ce94c_b.jpg


(1)单位阶跃信号

从物理角度讲,引入单位阶跃函数一是为了解决单位冲激函数(狄拉克Delta函数)的积分;二是系统在输入信号激励下的响应问题中,为了区分信号加入系统前后两个时点。信号加入系统开始起作用的时点称为“0时刻”后沿,记为0+,t=0+,就是t>0;输入信号要加而未加入的时点称为0时刻前沿,记为0-,t=0-,就是t<0。因而物理上一般不介入(0- ,0+)时区,因为这个时区内说不清输入信号到底加入系统了没有,实际上这个时区的宽度也不定,数学上可以认为它趋于0。于是单位阶跃函数在自变量为0处,即(0-,0+)区间上的值不予定义。这就是物理上采用第一种定义的缘故。

v2-abcd4c3071982f012de1cdf86b086156_b.jpg

(5-1)

  1. 单位冲激信号

"单位冲激函数"是一个“面积”等于1的理想化了的窄脉冲。也就是说,这个脉冲的幅度等于它的宽度的倒数。当这个脉冲的宽度愈来愈小时,它的幅度就愈来愈大。当它的宽度按照数学上极限法则趋近于零时,那么它的幅度就趋近于无限大,这样的一个脉冲就是“单位冲激函数”。在实际工程中,像“单位冲激函数”这样的信号是不存在的,至多也就是近似而已。在理论上定义这样一个函数,完全是为了分析研究方便的需要。


(3)正弦信号

正弦信号三要素:正弦信号的大小与方向都是随时间作周期性变化的,信号在任一时刻的值,称为瞬时值。

(4)实指数信号

常用的实指数信号是单边的,其定义为

(5-6)

特别应当注意的是,引入单位阶跃函数后,信号的波形有时候是不同的。

(5)复指数信号



  1. 离散时间信号

在时间上依次出现的数值序列,例如,{…,0.5,1,2,-1,0,5,…}。相邻两个数之间的时间间隔可以是相等的,也可以是不等的。在前一情况下,设时间间隔为T秒,则离散信号可用符号x(nT)来表示。在间隔T归一化为1的条件下,T可以省略,即将x(nT)表示为x(n)。x(n)既可表示整个序列, 可表示离散信号在nT瞬间的值。


v2-5b8a33a30dabe792c75bf41bfa24c291_b.jpg



图5-2 离散时间信号时域波形

  1. 单位序列信号

(2)单位阶跃信号

(3)正弦序列信号

(4)实指数序列信号

(5)虚指数序列信号

利用欧拉公式可以将正弦序列和虚指数序列联系起来,即

值得注意的是,虽然连续时间虚指数信号 和离散时间虚指数信号

看起来相似,但两者却存在很大的差异。


(1) 离散时间虚指数信号 的振荡频率不随角频率 的增加而增加,角频率为 的虚指数信号与角频率为 的虚指数信号相同(2) 离散时间虚指数信号 的周期性。


5.1.2 时域运算

1.连续时间信号运算界面


v2-028907813d81fe45e9efcbca29b70a99_b.jpg


图5-3 连续时间信号时域运算

两个正弦信号的幅度和角频率的可以任意改变,通过这些参数变换,可以看出连续时间信号时域运算的特征。如图5-3所示,两个信号的幅度和角频率均选择为2,当然也能换别的幅度与角频率,更可以通过界面观察连续时间信号的相加和相乘后的信号。

2.离散时间信号运算界面


v2-3ef66595c1a4fafcd721ef650593fd7f_b.jpg


图5-4 离散时间信号时域运算

离散时间信号的时域运算和连续时间信号相似,可以通过图像观察变换。

5.1.3 时域变换

1.连续时间信号时域变换


v2-e68893972f3329134dc370d75007c33b_b.jpg


图5-5 连续时间信号时域变换

如图5-5所示,输入的信号为

v2-c4965b2ac20737b906c4148f0737055d_b.jpg

,通过设置平移距离、展缩尺度、是否倒相、是否翻转等观察连续时域信号的时域变换。如果要进行倒相变换,在是否倒相的方框中输入“-1”即可,输入数字1代表不对信号做倒相运算。反折运算与此同理。

2.离散时间信号时域变换


v2-34b01b917da5bdac5264e7976373e64f_b.jpg


如图5-6所示的原序列信号,输入要对信号进行平移的距离、展缩的尺度,如图选择的平移距离为2,展缩尺度为2,可看到变换后的信号波形。

5.2 连续系统时域分析

连续系统的时域分析研究的主要内容是基于信号时域分解的思想,利用线性时不变系统的特性,得到线性时不变连续系统在任意激励作用条件下的零状态响应等于系统的冲激响应和激励信号的卷积积分。

  1. 冲激阶跃响应

一个LTI系统,当其初始状态为零时,输入为单位冲击函数引起的响应成为单冲击响应,简称冲击响应,用

v2-7c43f0a963b8f3664c1976de15df5323_b.jpg

表示,就是说,冲击响应时激励为单位冲击函数

v2-d26b96b9131766195b3446f9a2bfb2f7_b.jpg

时,系统的零状态响应。系统在单位阶跃信号作用下的零状态响应,称为单位阶跃响应,简称阶跃响应。


v2-429edbf93385a5904c8339852482e835_b.jpg


图5-7 冲激阶跃响应

系统的冲激响应和阶跃响应在MATLAB中控制系统工具箱中提供函数impulse和step分别表示。其调用方式为:

v2-1b4eaa3d49ebf67cb4377367666c2734_b.jpg

(5-18)

如图设置采用间距观察对冲激阶跃响应的影响。

(2)零状态响应

LTI连续时间系统的零状态响应可通过求解初始状态为零的常系数微分方程得到。在MATLAB中控制系统工具箱中提供了一个用于求解零初始条件微分方程数值解的函数lsim。其调用方式为:

v2-61129d77fe72eb8d1b8c1ed684d142eb_b.jpg

式中,sys表示LTI系统模型,用来表示微分方程、差分方程、状态方程,t表示计算系统响应的抽样点向量,f是系统输入信号向量。在求解微分方程时,微分方程的LTI系统模型sys借助于tf函数获得,其调用方式为:

v2-693cfcd1dabc46cf2d392446ae9911f0_b.jpg

式中,b和a分别为微分方程右端和左端各项的系数向量。


v2-9500ee899d36dff5f5a21dd12ef6dfe4_b.jpg


5.3 离散系统时域分析

v2-6ec778764b100d65683ba1b9f48b5c1d_b.jpg

1.单位序列响应

单位序列δ(k)所引起的零状态响应,记为h(k) 。

h(k)=T[{0},δ(k)] (5-19)

离散系统的单位脉冲响应在MATLAB中控制系统工具箱中提供函数impz表示。

调用格式是

impz(b,a) 式中b和a是表示离散系统的行向量;

impz(b,a,n) 式中b和a是表示离散系统的行向量,时间范围是0~n;

impz(b,a,n1,n2) 时间范围是n1~n2 ;y=impz(b,a,n1,n2) 由y给出数值序列;

k表示输出序列的取值范围,h是系统的单位脉冲响应。单位脉冲响应如图5-9所示:


v2-357a8e2e0c9f654327c153a811443b0f_b.jpg


图5-9 离散单位序列响应

  1. 离散系统的零状态响应

零状态响应是离散系统在初始状态为零时系统的响应。与连续系统类似,离散系统的零状态响应y(k)是激励与系统单位响应的卷积和。


v2-b4f3b8501383760af5fa7b3082fb0fcf_b.jpg


图5-10 离散系统零状态响应

5.4 傅里叶变换

1.方波傅里叶变换

傅立叶变换是数字信号处理领域一种很重要的算法。要知道傅立叶变换算法的意义,首先要了解傅立叶原理的意义。傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。


v2-e9ed34ea5ae9eacf3f341db907db36a5_b.jpg


2.离散傅里叶变换

对于非周期性的信号,我们需要用无穷多不同频率的正弦曲线来表示,这对于计算机来说是不可能实现的。所以对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到,在计算机面前我们只能用DFT方法,后面我们要理解的也正是DFT方法。这里要理解的是我们使用周期性的信号目的是为了能够用数学方法来解决问题,至于考虑周期性信号是从哪里得到或怎样得到是无意义的。


v2-9e42a2773594654a598e2316227f5dad_b.jpg


图5-12 离散傅里叶变换

3.用FFT信号作频谱分析

对信号进行谱分析的重要问题是频谱分辨率D和分析误差。频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是

v2-f7ed2775566ac3dde415219c89bcf244_b.jpg

,因此要求

v2-80045a0a5f887c8a3866104e07fa5fa6_b.jpg

。可以根据此式选择FFT的变换区间N。误差主要来自于用FFT作频谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。

周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。如果不知道信号周期,可以尽量选择信号的观察时间长一些。

对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。

如图5-13所示:


v2-ea4537e24210fa7bc07cd29ce116b46f_b.jpg


第6章 总结

本次设计,我主要依信号与系统为基础,与MATLAB图形用户界面相结合,经过了很曲折的摸索过程。在图书馆及网上找了很多关于GUI界面的知识。

本系统涵盖了很多实验,还是有一定的局限性。信号与系统课程内容涉及范围广,本系统没有把所有的内容设计进系统,有个别设计界面的参数不可改变,还需要进一步的改进。

信号与系统课程理论性强,又恨抽象,本设计解决的主要问题是帮助学习者理解并掌握课程中的基本概念、基本原理、分析方法等。本设计结合理论教学中的内容,利用图形用户界面,开发该课程的实验系统,并对设计内容的重要功能进行了详细说明。


参考文献

[1]陈后金,薛健,胡健.信号与系统[M].北京:高等教育出版社,2007

[2]唐向宏,岳恒立,郑雪峰.MATLAB及在电子信息类课程中的应用.电子工业出版社, 2006

[3]楼天顺,刘小东,李博菡.基于MATLAB 7-x 的系统分析与设计—信号处理 (第二版). 西安: 西安电子科技大学出版社,2005.

[4]景振毅,张泽兵,董霖.MATLAB 7.0实用宝典[M].中国铁道出版社,2009-11-23

[5]聂祥飞,王海宝,谭泽富.MATLAB程序设计及其在信号处理中的应用[M].西南交通大学,2005.4

[6]张志涌主编.精通MATLAB6.5.北京:北京航空大学出版社,2003

[7]罗建军,杨琦.精讲多练MATLAB.西安:西安交通大学出版社,2002

[8]梁虹.信号与系统分析及MATLAB实现.电子工业出版社,2002

[9]黄忠霖.控制系统MATLAB计算及仿真.北京:国防工业出版社,2001

[10] 郑君里.信号与系统.北京:高等教育出版社,1997

[11]MATLAB及在电子信息课程中的应用,陈怀琛主编,电子工业出版社,2003.07(第二版)

[12]信号与系统分析及MATLAB实现,梁虹编,电子工业出版社,2002.02

[13]MATLAB符号运算及其应用,黄忠霖、黄京著,国防工业出版社,2004.01

[14]MATLAB6.X信号处理,邹鲲等编,清华大学出版,2012.05(第一版)

[15]精通MATLAB6.5版,张志涌编,北京航空航天大学出版社,2013.03(第一版)

[16]MATLAB M语言高级编程,陈永春编,清华大学出版社,2014.01(第一版)

[17]MATLAB程序设计,阮沈勇、王永利等编,电子工业出版社,2014.01(第一版)

[18]MATLAB信号处理详解,陈亚勇等编,人民邮电出版社,2011.09

[19]基于MATLAB的系统分析与设计----信号处理,楼顺天等编,西安电子科技大 学出版社,2013

[20]MATLAB与通信仿真,王立宁等编,人民邮电出版社,2010.04

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐