信号与系统实验指导书(实验1~3)

更新时间:2024-06-10 15:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

信号与系统实验指导书

“信号与系统实验”是与“信号与系统”课程理论教学相配套而开设的计算机仿真实验课程,其目的在于实现在可视化的交互式实验环境中,以计算机为辅教学手段,以科技应用软件MATLAB 为实验平台,辅助学生完成“信号与系统”课程中的数值分析、可视化建模及仿真调试,同时将“信号与系统”课程教学中难点、重点及部分课后练习,通过计算机来进行可视化的设计、调试和分析,从而将学生从繁杂的手工运算中解脱出来,把更多的时间和精力用于对信号与系统基本分析方法和原理的理解和应用上,培养学生主动获取知识和独立解决问题的能力,为学习后继专业课打下坚实的基础。 实验教学基本要求:

1、熟悉MATLAB 的运行环境及基本操作命令,根据实验要求,认真完成基本数值算法的设计、编程、上机调试,分析运行结果,书写实验报告。 2、掌握用MATLAB 对连续与离散信号进行可视化表示的方法,信号的时域运算、变换及MATLAB 实现方法,学会应用MATLAB 对常用信号进行时域特性分析及波形绘制。

3、掌握用MATLAB 对线性系统的时域特性进行分析的基本方法。 4、掌握利用MATLAB 对周期信号进行频谱分析的实现方法,重点掌握周期信号的频谱与信号周期及其时域宽度的变化规律。

5、掌握利用MATLAB 对连续信号进行频域特性分析的基本方法,重点掌握傅里叶变换的符号实现、傅里叶变换的数值近似、傅里叶变换性质以及信号频谱分析的MATLAB 实现方法。

6、掌握应用MATLA 进行连续系统频域分析的基本实现方法,重点掌握系统频率响应、幅频响应、相频响应曲线的绘制,系统的频率特性分析的MATLAB 实现方法。

7、掌握应用MATLAB 对连续系统进行复频域分析的基本方法,重点掌握拉普拉斯变换的三维可视化表现、连续系统的零极点图的绘制及拉普拉斯逆变换的MATLAB 实现方法。

1

实验一 MATLAB 程序入门和基础应用

一、实验名称

MATLAB 程序入门和基础应用

二、实验目的

1.学习Matlab仿真软件的基本使用方法;

2.了解Matlab的数值计算,符号运算,可视化功能; 3. Matlab程序设计入门

三、实验原理

MATLAB如今已经被广泛地应用于各个领域中,是当今世界上最优秀的数值计算软件。它广为流传的原因不仅在于在它的计算功能强大,图形功能丰富、方便,还在于它的编程效率高,扩充能力强;语句简单,易学易用,而不会像其他的那些高级语言一样距人于千里之外。在这里我们就对MATLAB做一下简单的介绍。

1、 MATLAB简介

在科学技术飞速发展的今天,计算机正扮演着越来越重要的角色。在进行科学研究与工程一用的过程中,科技人员往往会遇到大量繁重的数学运算和数值分析,传统的高级语言BASIC、FORTRAN及C语言等虽然能在一定成都上减轻计算量,但它们均要求应用人员具有较强的编程能力和对算法有深入的研究[7]。

另外,在运用这些高级语言进行计算结果的可视化分析及图形处理方面,对非计算机专业的普通用户来说,仍存在着一定的难度。MATLAB正式在这一应用要求背景下产生的数学类科技应用软件,它具有的顶尖的数值计算功能。强大的图形可视化功能及简介医学的“科学便笺式”工作环境和编程语言,从根本上满足了科技人员对工程数学计算的要求,并将科技人员从繁重的数学运算中解放出来,因而,越来越受到广大科技工作者的普遍欢迎。

MATLAB是matrix和laboratory前三个字母的缩写,意思是“矩阵实验室”,是MathWorks公司推出的数学类可以应用软件。其DOS版本(MATLAB1.0)发行于1984年,到现在已经到了MATLAB7.X。经过20多年的不断发展与完善,MATLAB已发展成为由MATLAB语言、MATLAB工作环境、MATLAB图形处

2

理系统、MATLAB数学函数库和MATLAB应用程序接口五大部分组成的集数值计算、图形处理、程序开发为一体的功能强大的系统。MATLAB由“主包”和三十多个扩展功能和应用学科性的工具箱(Toolboxs)组成。

MATLAB具有一下基本功能: ? 数值计算功能 ? 符号计算功能 ? 图形处理集可视化功能 ? 可视化建模集动态仿真功能

MATLAB语言是以矩阵计算为基础的程序设计语言,语法规则简单易学,用户不用花太多时间即可掌握其编程技巧。其指令格式与教科书中的数学表达式非常相近,用MATLAB编写程序尤如在便笺上列写公式和求解,因而被称为“便笺式”的编程语言。另外,MATLAB还具有功能丰富和完备的数学函数库及工具箱,大量繁杂的数学运算和分析可通过调用MATLAB函数直接求解,大大提高了编程效率,其程序编译和执行速度远远超过了传统的C和FORTRAN语言,因而用MATLAB编写程序,往往可以达到事半功倍的效果。在图形处理方面,MATLAB可以给数据已二维、三维乃至四维的直观表现,并在图形色彩、视角、品性等方面具有较强的渲染和控制能力,使科技人员对大量原始数据的分析变得轻松和得心应手。

正是由于MATLAB在数值计算及符号计算等方面的强大功能,使MATLAB一路领先,成为数学类科技应用软件中的佼佼者。目前,MATLAB已成为国际上公认的最优秀的科技应用软件。MATLAB的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。目前,在国外高等院校,MATLAB已成为本科生、研究生必须掌握的基础软件,国内很多理工院校也已经把MATLAB作为学生必须掌握的一种软件,“教育部全国计算机专业课程知道委员会”已将MATLAB语言列为推荐课程。

2、MATLAB的安装

如今我们最常用的MATLAB版本是MATLAB7.0,虽然它不是最高最新的版本,但是它已经把MATLAB的功能很好的汇总在一起。

3

MATLAB既可在PC单机环境下亦可在网络环境下安装进行,在这里介绍MATLAB7.0在PC机单机环境使用Microsoft Windows 2000或者Windows XP操作系统进行安装的情况。

MATLAB7.0对系统的基本要求为:

? Microsoft Windows 2000或者Windows XP ? 奔腾处理器(1.0G上) ? 256MB以上内存 ? 16位以上显卡

在系统满足上述要求的情况下,即可进行MATLAB7.0的安装,安装过程]如下:

1)插入光盘,自动运行; 或点击安装程序 setup.exe

图1. 1Mathwoks公司的软件安装工具界面

2)安装程序自动打开Mathworks公司多的安装工具后,按下【Next】按钮即继续安装。

3)安装程序自动进入注册对话框,用户在响应的编辑框内输入产品注册码(可以在解压缩后的文件夹中找到),然后按下【Next】按钮继续安装。

4

图1.2 产品注册码输入界面

3)用户认可Mathworks公司的软件协议后,继续在用户名称和公司名称的编辑框内输入相关信息。按下【Next】按钮继续安装。

图1.3 认可软件协议,并填写用户名和公司名称

5

图1.4 选择安装界面

4)安装程序会自动打开MATLAB6.5安装内容选择对话框(图1.2),MATLAB的组件、安装目录路径以及安装所需要的磁盘空间等信息均显示在图中。在项目1下的编辑框内输入安装的路径与目录,并可点击【Browse】按钮,以浏览、选择并改变MATLAB的安装的路径与子目录。

图1.5 安装路径和安装项目选择

3、MATLAB的启动与退出 1)MATLAB的启动

方式一:使用 Windows “开始” 菜单 方式二:双击 Matlab 快捷图标

6

2)MATLAB的退出

方式一:在 Matlab 主窗口 File 菜单中选择 Exit Matlab 方式二:在 Matlab 命令窗口输入 exit 或 quit 方式三:单击 Matlab 主窗口的“关闭”按钮 4、MATLAB的系统界面

MATLAB既是一种高级计算机语言,又是一个编程环境。MATLAB的系统界面,通常是指这个软件所具有的各种界面以及这些界面理的诸多菜单命令、工具栏按钮与对话框。通过对其操作,可以运行并管理系统:生成编辑与运行程序,管理变量与工作空间,输入输出数据与相关信息以及生成与管理M文件等。本节要介绍MATLAB7.0的系统界面、系统菜单项命令、系统工具按钮、系统界面的窗口、Start开始按钮等。

MATLAB7.0的系统界面如图1.6所示。在图中,最上面有“MATLAB”标题,标题栏的右边从左到右依次为窗口最小化、缩放和关闭按钮。标题栏下是条形主菜单,主菜单下是工具栏按钮与设置当前目录的弹出式菜单框及其右侧的查看目录树的按钮(【Browse for Folder】)。在工具栏下的大窗口就是MATLAB的主窗口,在大窗口里设置有4个小窗口(这是桌面平台的默认设置):“Workspace”、“Current Directory”、“Command History”、“Command Windows”。在最下方是“Start”开始按钮。

当前工作目录 命令 提示符 当前工作空间 命令窗口 输入命令的历史记录

图1.6 MATLAB命令窗口

7

5、MATLAB 7.0菜单项命令

条形组菜单有【文件(File)】、【编辑(Edit)】、【程序调试(Debug)】、【窗口显示(Desktop)】、【窗口(Window)】、【帮助(Help)】等6个菜单项。

【File】:可以根据目的的不同来新建和打开各种不同的文件,如M文件,Simulink仿真库等等,而且可以把已经编辑好的文件进行存档。

【Edit】:复制、粘贴和删除等常见文档操作。在【Edit】菜单中有3个窗口刷新选项,分别用来刷新命令窗口、历史窗口和工作空间中的操作记录,用户也可以在各窗口上直接单击鼠标右键实现同样操作。

【Debug】:程序调试。详细内容参见程序调试相关章节。

【Desktop】:设置用户界面的窗口显示。在【Desktop】菜单中,用户可以进行对用户界面上的窗口进行设置,子菜单中选择【Desktop Layout\\Default】,用户界面显示默认设置。如果用户选择【Desktop Layout\\Command Windows Only】,则用户界面只包含命令窗口,如图所示。

【窗口(Window)】菜单项下拉后仅有【关闭所有窗口】的子项。 【帮助(Help)】是一些使用MATLAB的帮助命令。 【查看(View)】菜单的功能式用于查看各种界面。

MATLAB的工具栏以图标方式为用户提供了MATLAB的常用命令及操作。工具栏图标及对应功能如图1.7所示。

图1.7 工具栏

6、用户界面中的窗口

用户界面所包含的各个窗口的功能和使用方法。这里介绍的窗口是用户

8

MATLAB进行各项工作的基本平台,熟练地理解和使用各个窗口是所有MATLAB操作的基础。

1)命令窗口(Command Window)

命令窗口是MATLAB中最重要的窗口,默认显示在用户界面的右侧。用户在命令窗口中进行MATLAB的多种操作,如输入各种指令、函数和表达式等,此窗口是MATLAB中使用最为频繁的窗口,显示除图形外的一切运行结果。

当用户启动MATLAB7.0时,命令窗口中首先显示“To get started, select MATLAB Help or Demos from the help menu.”的提示信息,提醒用户:开始使用MATLAB之前,可以参考帮助系统(MATLAB Help)和演示文档(Demos)。在提示信息后,命令窗口中显示运行提示符“>>”。

命令窗口的工作区为用户提供了交互式的工作环境,即用户可随时输入命令,计算机即时给出元素结果。用户只需输入简单易学的MATLAB命令,即可进行诸如数值计算、符号运算和运算结果的可视化等复杂的分析和处理。但要注意,每一条命令或命令行键入后都要按【Enter】(回车)键,命令才会被执行。例如,在命令窗口的工作区直接输入如下字符:a=ones(3,3)

然后按回车键,即可创建一个3×3且元素值为1的矩阵,并显示如下运行结果:

a= 1 1 1

1 1 1

1 1 1

2)历史窗口(Command History)

用户在命令窗口中运行的所有命令,都被默认保留在历史窗口中,并且标明指令运行的日期和时间。用户可以对已执行命令进行操作,选择某条指令单击鼠标右键,在菜单选项中选择需要的操作,例如剪切、复制、粘贴和删除操作等。如果选择【Evaluate Selection】选项,即对选中指令重新进行运行,也可通过双击一条历史命令来重新执行该命令,重新执行命令。

3)工作空间窗口(Workspace)

工作空间窗口中显示MATLAB7.0工作内存中所有变量的名称、数据结构、

9

大小及类型等信息,不同类型对应不同的图标,如图1.8(左)所示。用户可以选择窗口工具栏中的图标,来新建一个变量,如图1.8(右)所示,新建一个名为“undefined variable”的变量。

图1.8 工作空间窗口中的变量

4)数组编辑窗口

MATLAB7.0为用户提供了一个可以对数组进行编辑的窗口,即数组编辑窗口。数组是MATLAB的基本数据结构,是所有运算的基础。用户可以在工作空间窗口中选中一个数组,双击此数组或选择图标,出现内存数组编辑对话框。 7、MATLAB软件的使用

刚启动MATLAB进入到如图1.9所示的界面,但是这只是文件引索和命令执行窗口。我们可以通过点击【File】→【New】→【M-file】,进入到如图1.9所示的界面,也就是M程序编辑窗口,或者按下Ctrl+n键,或者直接点击新建空白M文件,这就是我们在接下来的实验中要用到的界面。

图1.9 M程序编辑窗口

10

进入到上面的界面以后,就开始进行编写程序。我们把编写好的程序键入,然后再把程序保存起来,因为MATLAB不会编译没有保存的文件。点击【File】→【Save As…】,给文件输入一个容易辨别的名字,系统会以 .m为后缀保存到G:\\MATLAB\\work的work文件夹中。保存之后,我们要对程序进行编译,点击【Debug】→【Run】,或者直接按F5就可以进行编译。编译成功,会听到“嘀”的一声,随之弹出程序运行结果。如果编译不成功,则会在图1.9所示窗口显示出哪一行出现了错误。对指出的错误进行修改,再次编译运行。 8、实验中要用的指令介绍

在整个信号与系统实验过程中,我们要利用MATLAB语言来编程实现对信号描述,时域变换,计算卷积等等一些过程。所以,对MATLAB中的简单常用指令必须有一个比较好的了解。下面对一些常用指令做简单的介绍。

function:在MATLAB中不是它的自带函数就可以完成所有功能,更多的时候是自己编写程序来实现我们要的功能,这时就要用到此命令,调用格式为:function ****( ) 括号外面为函数名称,括号中为函数中要用到的变量。

plot命令:plot命令是MATLAB中用来绘制用向量表示法(在下一章中讲到)表示的连续信号的波形。它的功能是将向量点用直线依次连接起来。调用格式:plot(k,f),其中k和f是向量。

ezplot命令:ezplot命令是用来绘制用符号运算表示法表示的连续信号的波形。调用格式:ezplot(f,[t1,t2]),其中[t1,t2]为一时间范围,f为以t为变量的函数。

title命令:在绘图命令中,我们可以用此命令来对绘制出来的波形做一些注释,以便后期我们做图形处理。调用格式为:title(? ?? ?) 中间部分可以任意对图形进行注释的文字。

xlabel、ylabel命令:这两个也是来对绘制出来的波形做标注用的,可以标注出两个坐标轴的未知数的意义,增加图形中的信息量。调用格式:

xlabel(? ?? ?),ylabel(? ?? ?) 中间可以是对坐标轴做注释的文字或字母。

axis命令:此命令可以来定义绘制波形中坐标的范围。调用格式为:axis([k1,k2,g1,g2]),其中k1,k2表示横坐标的范围,g1,g2表示纵坐标的范围。

syms命令:在符号表示法中,可以用此命令来定义变量。调用格式为:syms t 意思是定义一个变量t。

11

sym命令:是符号表示法中的调用系统自带函数的命令。调用格式为:f=sym(????) 中间为系统能识别的常用信号,如正弦信号,e?nt等。

stem命令:此命令专门用来绘制离散序列的波形。调用格式为:stem(k,f) 调用此命令可以绘制出离散序列的点状图。

subs命令:此可以将连续信号中的时间变量t用t-t0,at等等来替换,从而可以完成信号在时域范围内的变换。调用格式为:subs(f,t,t-t0) 通过调用此函数可以把信号做移位,伸展等等变换。

fliplr命令:此函数用来将向量以零时刻为基准点进行反折。调用格式为:f=fliplr(f1) 这样f就是向量f1反折后的函数。

min、max命令:这两个命令可以用来比较算出一个向量中的最小值和最大值,或者比较得出两个值中的较小值。调用格式为:min(k),max(k),min(k1,k2),max(k1,k2)

length命令:此函数可以计算出向量的长度。调用格式为:length(f)。 ones函数:这是MATLAB中一个常用的函数,它产生元素全部为1的矩阵,本文中用此函数来表示离散阶跃序列,或者定义连续的门信号,调用格式为:n=0:5;ones(1,n)表示长度为整数n的阶跃序列。k=1:p:8;ones(1,length(k))表示长度为k的门信号。

subplot命令:在MATLAB绘图过程中,有时候为了便于观测图形的变化,需要在一幅波形显示窗口显示多个信号的波形,这时可以调用subplot命令。调用格式为:subplot(n1,n2,k),如定义一个subplot(2,2,1),就可以在显示窗口中显示k=2×2个波形。

conv函数:这个函数是用来计算两个序列的卷积和,调用此函数,可以将两个给定的序列计算出卷积和,调用格式为f=conv(f1,f2)。

四、实验设备

计算机 MATLAB软件

五、实验的预习

1、了解MATLAB的相关知识,包括它的功能,简单的函数用法等等; 2、学习MATLAB的常用矩阵运算函数,关系运算和逻辑运算,MATLAB

描述信号方法。了解matlab语言的绘图功能;

12

3、预习MATLAB连续信号和离散信号的时域变换。

六、实验内容及具体步骤

1、打开MATLAB的系统界面,对其功能做一个大致了解。

2、学习变量的描述方法,掌握几个固定变量:I,j,pi,inf的使用。 注意,变量描述以字母开头,可以由字母、数字和下划线混合组成,区分字母大,小写字符长度不超过31个。

3、学习数值,矩阵,运算符,向量的矩阵运算,数组运算的描述方法。 (1)用一个简单命令求解线性系统

3x1+ x2 - x3 =3.6 x1+2x2+4x3 = 2.1 -x1+4x2+5x3 = -1.4

A=[3 1 -1;1 2 4;-1 4 5];b=[3.6;2.1;-1.4]; x=A\\b

x = 1.4818 -0.4606 0.3848

(2)用简短命令计算并绘制在0?x?6范围内的sin(2x)、sinx2、sin2x。

x=linspace(0,6)

y1=sin(2*x),y2=sin(x.^2),y3=(sin(x)).^2; plot(x,y1,x, y2,x, y3)

4、Matlab符号运算功能 (1)符号运算的过程

在符号运算的整个过程中,所有的运算均是以符号进行的,即使以数字形式出现的量也是字符量。做一个对sin(x/2)求导的过程。

在命令窗口中输入如下符号表达式按回车: f='sin(x/2)';

dfdx=diff(f)

显示结果如下: dfdx = 1/2*cos(1/2*x)

整个求导的过程都是由符号变量和符号表达式完成,没有涉及到具体的数值运算,其中1/2也被当作是字符量 。

注意:符号变量前先要进行定义,定义语句是:sym 或syms 变量名列表。

13

前者定义一个单一的符号变量,后者可以一次定义多个符号变量。如:

sym a 定义a为符号变量 sym a b c 定义a,b,c均为符号变量

符号表达式是由符号变量组成的一个表达式,符号方程是将一个符号表达式通过等号给一个符号变量。凡是用到sym命令的时候,表达式和方程式对空格都是敏感的,因此不要随意添加空格符到式中

(2)符号表达式的创建:用sym命令直接创建符号表达式,这种创建方式不需要在前面有任何说明,使用快捷方便。例如:

f=sym(?a+b+c?)

在命令窗口中输入上述语句按回车键,出现以下结果:f= a+b+c。说明已成功将符号表达式a+b+c赋给变量f

5、matlab语言的绘图功能

(1)plot —— 最基本的二维图形指令

用plot命令自动打开一个图形窗口Figure, 用直线连接相邻两数据点来绘制图形,根据图形坐标大小自动缩扩坐标轴,将数据标尺及单位标注自动加到两个坐标轴上,可自定坐标轴,可把x, y 轴用对数坐标表示。任意设定曲线颜色和线型,给图形加坐标网线和图形加注功能。

分别完成plot(x), plot(x,y) ,plot(x1,y1,x2,y2) ,三种格式的调用,得出结论。

调用plot(x,y,?s?),注意开关量字符串s设定的曲线颜色和绘图方式。 (2)曲线绘图

观察 以下各段语句的绘图结果: A: x=[0, 0.48,0.84,1,0.91,0.6,0.14] [ x1, x2, x3, x4, x5, x6, x7,]

plot (x)

B: t=0:pi/100:2*pi;

y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y,t,y1,t,y2)

C: subplot(1,3,1); plot(t,y)

subplot(1,3,2); plot(t,y3)

14

subplot(1,3,3); plot(t,y2) D: t=0:pi/100:2*pi;

y=sin(t);y1=sin(t+0.25);y2=sin(t+0.5); plot(t,y,t,y1,t,y2)

E: subplot(3,1,1);

plot(t,y) subplot(3,1,2); plot(t,y3) subplot(3,1,3); plot(t,y2) F: ezplot('sin(x)')

ezplot('sin(x)','cos(y)',[-4*pi 4*pi],figure(2))

思考题:

1、说明产生一个matlab行向量的两种方法,其中行向量从0开始,并在pi结束,共有13个等间隔点。

2、假定行向量x=[3 6 9],y=[5 3 0],下列matlab运算的结果是什么? A x+y b, x.*y c, x.^y d, x./y

15

实验二 基于MATLAB的信号的时域表示

一、实验名称:

基于MATLAB的信号的时域表示

二、实验目的:

1. 在了解MATLAB这个软件的基本应用之后,学习用MATLAB描述常用

信号的方法。

2. 掌握连续时间信号表示。 3. 学会用向量和符号表示法。 4. 掌握信号的时域变换方法。

三、实验原理:

MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。在MATLAB中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。

1、连续时间信号

所谓连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。 (1)向量表示法

对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t=t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。向量f为连续信号f(t)在向量t所定义的时间点上的样值。例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:

t=-10:1.5:10; f=sin(t)

16

用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。命令如下:

plot(t,f) title(?f(t)=sint?) xlabel(?t?)

axis([-10,10,-1.1,1.1])

绘制的信号波形如图2.1所示,当把时间间隔p取得更小(如0.01)时,就可得到sint较好的近似波形,如图2.2所示。

图2.1 p=1.5的sint近似波形 图2.2 p=0.01的sint近似波形

(2)符号运算表示法

如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令绘制出信号的波形。例如对于连续信号f(t)= e?t/2,我们可以用符号表达式表示为:

17

syms t

f=sym(?exp(-t/2)?) f= exp(-t/2)

然后用ezplot命令绘制其波形:ezplot(f,[-6, 6]) 该命令绘制的信号波形如图2.3所示

图2.3 指数信号波形

利用上面两种表达方式我们可以描述出很多种连续信号,常用的信号有:阶跃信号,门信号,斜线信号,指数信号等等。

2、信号的时域变换

信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。我们就分别介绍连续时间信号各种时域变换。

连续信号的时域变换

如前所述,MATLAB可以有两种方法来表示连续信号。用这两种方法均可实现连续信号的时域变换,但用符号运算的方法则较为简便。 (1)移位

对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量t用t-t0替换:

y=subs(f,t,t-t0); ezplot(y)

18

(2)反折

连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t换为-t。实现如下:

y=subs(f,t,-t); ezplot(y)

(3)尺度变换

连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f(t)中的自变量t换为at,当a>1时,信号f(at)以原点为基准,沿横轴压缩到原来的1/a;当0

y=subs(f,t,*t); ezplot(y)

(4)倒相

连续信号的倒相是指将信号f(t)以横轴为对称轴对折得到-f(t)。实现如下: y=-f; ezplot(y)

对于以上的命令,可在画图命令之后加入坐标轴的调整的命令(即加入axis( )命令),以使画出的图形更清晰、直观。

四、实验设备

计算机 MATLAB软件

五、实验内容:

1.在MATLAB中连续信号的向量或符号运算功能来表示

严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。 (1)向量表示法

对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t=t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。向量f为连续信号f(t)在向量t所定义的时间点上的样值,例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:

t=-10:1.5:10; f=sin(t)

用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波

19

形。Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。命令如下:

? ? ? ?

plot(t,f) title(?f(t)=sint?) xlabel(?t?)

axis([-10,10,-1.1,1.1])

(2) 符号运算表示法

如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令绘制出信号的波形。例如对于连续信号f(t)= ,我们可以用符号表达式表示为:

syms t

f=sym(?exp(-t/2)?) f= exp(-t/2)

然后用ezplot命令绘制其波形:ezplot(f,[-6, 6])

2、单位阶跃序列,正弦序列,离散时间指数序列等的离散信号我们都可以用类似的方法描述并绘制出图形 : 指数信号Aeat

y=A*exp(a*t) 取A=1,a=-0.4 A=1;a=-0.4; t=0:0.01:10; ft= A*exp(a*t); plot(t,ft)

正弦信号

y=A*cos(w0*t+phi) y=A*sin(w0*t+phi)

抽样函数

y=sinc(t)

矩形脉冲信号

y=rectpuls(t,width)

20

产生幅度为1,宽度为width以t=0为对称的矩形波,Width默认值为1 三角波脉冲信号

y=tripuls(t,width,skew)

信号信号的时域变换包括信号的平移、反折、倒相及信号的尺度变换。我们就分别介绍连续时间信号和离散时间信号的各种时域变换 指数序列 Aak

A*a.^k

K=0:10;A=1;a=-1.6; fk= A*a.^k; stem(k,fk)

单位脉冲序列

零矩阵函数zeros(1,N)产生一个由N个零组成的列向量, k=-50:50;

delta=[zero(1,50),1,(1,50)]; stem(k,delta)

单位阶跃序列

…0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 …

零矩阵函数zeros(1,N)产生一个由N个零组成的列向量,ones(1.N)产生一个由N个1组成的列向量

k=-50:50;

uk=[zero(1,50),ones(1,51)]; stem(k,uk)

3、连续信号的时域变换 移位

对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量t用t-t0替换:

y=subs(f,t,t-t0); ezplot(y)

21

反折

连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t换为-t。实现如下:

y=subs(f,t,-t); ezplot(y) 尺度变换

连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f(t)中的自变量t换为at,当a>1时,信号f(at)以原点为基准,沿横轴压缩到原来的1/a;当0

y=subs(f,t,*t); ezplot(y)

倒相

连续信号的倒相是指将信号f(t)以横轴为对称轴对折得到-f(t)。实现如下:

y=-f; ezplot(y)

对于以上的命令,可在画图命令之后加入坐标轴的调整的命令(即加入axis( )命令),以使画出的图形更清晰、直观。

与连续信号不同的是,在MATLAB中,离散序列的时域变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的变换需表示成两个向量的变换。

六、实验报告要求:

(1)简述实验目的记实验原理。

(2)按照实验步骤上的实验过程,把重要的程序和实验结果都记录下来。 (3)总结实验中的主要结论。

22

实验三 信号卷积的MATLAB实现

一、实验名称:

信号卷积的MATLAB实现

二、实验目的:

1.增加对卷积积分的认识;

2.了解MATLAB这个软件的一些基础知识; 3.利用MATLAB计算信号卷积; 4.验证卷积的一些性质。

三、实验原理:

用MATLAB实现卷积我们先必须从信号下手,先把信号用MATLAB语句描述出来,然后再将这些信号带入到我们写好的求卷积的函数当中来计算卷积。在本章中我们将信号分为连续信号和离散序列两种来实现卷积并验证卷积的一些性质。

MATLAB强大的图形处理功能及符号运算功能,为我们实现信号的可视化提供了强有力的工具。在MATLAB中通常有两种方法来表示信号,一种是用向量来表示信号,另一种则是用符号运算的方法来表示信号。用适当的MATLAB语句表示出信号后,我们就可以利用MATLAB的绘图命令绘制出直观的信号波形。

连续时间信号,是指自变量的取值范围是连续的,且对于一切自变量的取值,除了有若干不连续点以外,信号都有确定的值与之对应的信号。从严格意义上来讲,MATLAB并不能处理连续信号,在MATLAB中,是用连续信号在等时间间隔点的样值来近似地表示连续信号的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。 1.向量表示法

对于连续时间信号f(t),我们可以用两个行向量f和t来表示,其中向量t是行如t=t1:p:t2的MATLAB命令定义的时间范围向量,t1为信号起始时间,t2为中止时间,p为时间间隔。向量f为连续信号f(t)在向量t所定义的时间点上

23

的样值。例如对于连续信号f(t)=sin(t),我们可以用如下两个向量来表示:

t=-10:1.5:10; f=sin(t)

用上述向量对连续信号表示后,就可以用plot命令来绘出该信号的时域波形。Plot命令可将点与点间用直线连接,当点与点间的距离很小时,绘出的图形就成了光滑的曲线。命令如下:

plot(t,f) title(?f(t)=sint?) xlabel(?t?)

axis([-10,10,-1.1,1.1])

绘制的信号波形如图3.1所示,当把时间间隔p取得更小(如0.01)时,就可得到sint较好的近似波形,如图3.2所示。

图3.1 p=1.5的sint近似波形

图3.2 p=0.01的sint近似波形

24

2.符号运算表示法

如果信号可以用一个符号表达式来表示它,则我们可用ezplot命令绘制出信号的波形。例如对于连续信号f(t)= e?t/2,我们可以用符号表达式表示为:

syms t

f=sym(?exp(-t/2)?) f= exp(-t/2)

然后用ezplot命令绘制其波形:ezplot(f,[-6, 6]) 该命令绘制的信号波形如图3.3所示

图3.3 指数信号波形

利用上面两种表达方式我们可以描述出很多种连续信号,常用的信号有:阶跃信号,门信号,斜线信号,指数信号等等。 3.连续信号的时域变换

如前所述,MATLAB可以有两种方法来表示连续信号。用这两种方法均可实现连续信号的时域变换,但用符号运算的方法则较为简便。 (1).移位

对于连续信号f(t),若有常数t0>0,延时信号f(t-t0)是将原信号沿正t轴方向平移时间t0,而f(t+t0)是将原信号沿负t轴方向移动时间t0。我们可用下面的命令来实现连续信号的平移及其结果可视化,其中f是用符号表达式表示的连续时间信号,t是符号变量,subs命令则将连续信号中的时间变量t用t-t0替换:

y=subs(f,t,t-t0); ezplot(y)

25

(2).反折

连续信号的反折,是指将信号以纵坐标为轴反折,即将信号f(t)中的自变量t换为-t。实现如下:

y=subs(f,t,-t); ezplot(y) (3).尺度变换

连续信号的尺度变换,是指将信号的横坐标进行展宽或压缩变换,即将信号f(t)中的自变量t换为at,当a>1时,信号f(at)以原点为基准,沿横轴压缩到原来的1/a;当0

y=subs(f,t,*t); ezplot(y) (4).倒相

连续信号的倒相是指将信号f(t)以横轴为对称轴对折得到-f(t)。实现如下: y=-f; ezplot(y)

对于以上的命令,可在画图命令之后加入坐标轴的调整的命令(即加入axis( )命令),以使画出的图形更清晰、直观。

4.连续信号的卷积

用MATLAB实现连续信号f1(t)与f1(t)卷积的过程如下:

1.将连续信号f1(t)与f1(t)以时间间隔Δ进行取样,得到离散序列f1(kΔ)与f1(kΔ);

2.构造与f1(kΔ)和f1(kΔ)相对应的时间向量k1和k2(注意,此时时间序号向量k1和k2的元素不再是整数,而是取样时间间隔Δ的整数倍的时间间隔点);

3.调用conv( )函数计算卷积积分f(t)的近似向量f(nΔ); 4.构造f(nΔ)对应的时间向量k。

根据以上步骤我们自己可以比较容易写出求连续信号卷积的函数程序sconv( ),该函数实现的功能为:在计算连续信号的卷积的同时绘出信号及卷积结果的波形,程序如下:

function [f,k]=sconv(f1,f2,k1,k2,p) %计算连续信号卷积积分f(t)=f1(t)*f2(t) %f: 卷积积分f(t)对应的非零样值向量

26

%k: f(t)的对应时间向量 ?: f1(t)的非零样值向量 ò: f2(t)的非零样值向量 %k1: f1(t)的对应时间向量 %k2: f2(t)的对应时间向量 %p: 取样时间间隔

f=conv(f1,f2); %计算需要序列f1与f2的卷积和f f=f*p; %将f进行采样

k0=k1(1)+k2(1); %计算序列f非零样值的起点位置 k3=length(f1)+length(f2)-2; %计算卷积和f的非零样值的宽度 k=k0:p:k3*p; %确定卷积和f非零样值的时间向量 subplot(2,2,1)

plot(k1,f1) %在子图1绘f1(t)时域波形图 title('f1(t)') xlabel('t') ylabel('f1(t)') subplot(2,2,2)

plot(k2,f2) %在子图2绘f2(t)时域波形图 title('f2(t)') xlabel('t') ylabel('f2(t)') subplot(2,2,3)

plot(k,f) %画卷积f(t)的时域波形 title('f(t)=f1(t)*f2(t)') xlabel('t') ylabel('f(t)')

给定下面两个连续信号,我们调用sconv( )函数来求两连续信号的卷积。 f1(t)=2[U(t)-U(t-4)] f2(t)=U(t)-U(t-2) MATLAB命令如下: p=0.01;

27

k1=0:p:4; f1=2*ones(1,length(k1))

k2=0:p:2; f2=ones(1,length(k2)) ?,f2两个信号的向量表示 [f,k]=sconv(f1,f2,k1,k2,p) %子函数调用 运行程序,绘制卷积结果波形如图3.4所示。

图3.4 连续时间信号的卷积

为了能比较熟练的运用MATLAB计算卷积,我们可以将我们比较熟悉的信号都带入到上面的程序中去,当然也可以自己描述一些信号来求其卷积。

四、实验设备:

计算机 MATLAB软件

五、实验的预习:

1、认真阅读教科书中有关卷积的这部分内容,了解其原理和计算方法。 2、了解MATLAB的相关知识,包括它的功能,简单的函数用法等等。

六、实验内容及具体步骤:

1.在老师提示和引导下用 MATLAB 来表示常见信号

打开电脑,双击桌面上的matlab7.0的快捷方式,进入到MATLAB界面,然后进入编辑界面【file】-【new】,或者直接点击新建空白页按钮,可以看到出现一个命名为untitled的编辑窗口,这就是我们的程序输入窗口。我们先做准备工作,敲入一些简单的信号并输出,了解一下它的功能。

28

常见连续信号的表示:阶跃信号 门信号 正弦信号 指数信号等等 常见离散序列的表示:随机离散序列 单位阶跃序列 正弦序列 离散时间指数序列

将描述各个信号的函数键入以后,保存到MATLAB根目录下的work文件夹中,并按照各个信号的性质进行命名。然后对各个函数运行一下,看是否和实际的函数一致。编译程序【debug】-【run】,或者直接按F5就可以进行。程序不大,编译很快就会完成,成功的编译会出现名为figure的窗口,可以看到信号的波形。

2.针对一些信号做一下时域变换

时域变换主要是在时域范围内对信号进行信号的平移、反折、倒相以及信号的尺度变换。

1)、移位

y=subs(f,t,t-t0); ezplot(y)

2)、反折

y=subs(f,t,-t); ezplot(y)

3)、尺度变换 y=subs(f,t,a*t) ezplot(y)

4)、倒相 y=-f

ezplot(y)

给定一个信号,对此信号做以上这些时域变换操作,将写好的程序保存到根目录work文件夹中,然后对程序进行编译运行,编译成功后,观察图形窗口中显示的波形与原来信号的波形之间的关系。

对信号做时域的变换可以增加学生对MATLAB的认识,也可以巩固对信号的表示。同时我们也可以用这些变换来表示一些复杂的信号。

3.利用MATLAB计算两个信号的卷积

在MATLAB中我们采用它自带的函数conv( )来对信号进行卷积 1)求连续信号的卷积

打开一个空白编辑窗口,先将要卷积的两个信号表示出来,然后将两个信号带入到conv( )函数中,再敲入画图命令plot( )函数。把写好的程序存入MATLAB根目录下的work文件夹中,按F5进行编译运行,编译成功后可以观察波形窗

29

口的输出波形,记录下来。

为了能更加深大家的印象,可以换不同的信号来做卷积运算。只需要把信号表示部分做更改就可以了。做上面一样的操作,观察记录波形。

同样,我们可以把计算卷积和画图的操作写成一个函数sconv,而使用时只需表示信号,再调用此函数就可以了。

波形要观察和记录的内容: 1、波形在幅度上的变化; 2、波形在时域范围内的变化; 4.验证信号卷积特性:

卷积的特性有:交换律、结合律、分配律。这里主要验证它的结合律和分配律。

1)、验证结合律[x(n)*h1(n)]*h2(n)?x(n)*[h1(n)*h2(n)]

要验证结合律,我们要把其中两个信号先进行卷积,再与第三个信号相卷积。将写好的程序保存,编译运行,将得到的信号保存下来。

将刚刚用过的三个信号调换位置,重复上面的操作。将程序保存,编译运行。可以看到所得信号与上面保存的信号是一样的。说明卷积满足结合律。

2)、验证分配律x(n)*[h1(n)?h2(n)]?x(n)*h1(n)?x(n)h2(n)

要验证分配律,我们先把两个信号相加,表示出来,然后与第三个信号相卷积。写好程序,保存,编译运行。

再把这两个信号分别与第三个信号进行卷积,然后再把两个信号叠加。保存程序,编译运行。

观察比较前后两个程序的输出。输出一致,说明卷积满足分配律。 建议:将实验中的程序保存,而且把输出波形都以图片.jpg的格式保存下来,我们可以方便的比较实验的结果 (如在验证卷积特性时,等式左右两边的波形图应该是一样的),在实验报告中也会用到。

七、思考题

1、某系统的冲激响应为h(t)?e?tU(t),系统的激励为x(t)?2*sin试编程求出该系统的零状态响应,并绘出响应波形。

?t2U(t),

30

2、实验中没有用连续信号来验证卷积的性质,试仿照离散序列的程序写出用连续信号验证卷积结合律特性的程序,并用简单信号来证明程序正确性。

八、实验报告要求:

(1)简述实验目的记实验原理。

(2)按照实验步骤上的实验过程,把重要的程序和实验结果都记录下来。 (3)总结实验中的主要结论。

31

本文来源:https://www.bwwdw.com/article/cka6.html

Top