2016-2017学年第一学期信号与系统实验报告班级:姓名: 学号: 成绩:指导教师:实验一 常见信号的MATLAB 表示及运算一.实验目的1.熟悉常见信号的意义、特性及波形2.学会使用MATLAB 表示信号的方法并绘制信号波形 3. 掌握使用MATLAB 进行信号基本运算的指令 4. 熟悉用MATLAB 实现卷积积分的方法二.实验原理信号一般是随时间而变化的某些物理量。
按照自变量的取值是否连续,信号分为连续时间信号和离散时间信号,一般用()f t 和()f k 来表示。
若对信号进行时域分析,就需要绘制其波形,如果信号比较复杂,则手工绘制波形就变得很困难,且难以精确。
MATLAB 强大的图形处理功能及符号运算功能,为实现信号的可视化及其时域分析提供了强有力的工具。
根据MATLAB 的数值计算功能和符号运算功能,在MATLAB 中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。
在采用适当的MATLAB 语句表示出信号后,就可以利用MATLAB 中的绘图命令绘制出直观的信号波形了。
下面分别介绍连续时间信号和离散时间信号的MATLAB 表示及其波形绘制方法。
1.连续时间信号所谓连续时间信号,是指其自变量的取值是连续的,并且除了若干不连续的点外,对于一切自变量的取值,信号都有确定的值与之对应。
从严格意义上讲,MATLAB 并不能处理连续信号。
在MATLAB 中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。
在MATLAB 中连续信号可用向量或符号运算功能来表示。
⑴ 向量表示法对于连续时间信号()f t ,可以用两个行向量f 和t 来表示,其中向量t 是用形如12::t t p t 的命令定义的时间范围向量,其中,1t 为信号起始时间,2t 为终止时间,p 为时间间隔。
向量f 为连续信号()f t 在向量t 所定义的时间点上的样值。
说明: plot 是常用的绘制连续信号波形的函数。
严格说来,MATLAB 不能表示连续信号,所以,在用plot( )命令绘制波形时,要对自变量t 进行取值,MATLAB 会分别计算对应点上的函数值,然后将各个数据点通过折线连接起来绘制图形,从而形成连续的曲线。
因此,绘制的只是近似波形,而且,其精度取决于t 的取样间隔。
t 的取样间隔越小,即点与点之间的距离越小,则近似程度越好,曲线越光滑。
例如:图1-1是在取样间隔为p=0.5时绘制的波形,而图1-2是在取样间隔p=0.1时绘制的波形,两相对照,可以看出图1-2要比图1-1光滑得多。
在上面的f=sin(t). /t 语句中,必须用点除符号,以表示是两个函数对应点上的值相除。
⑵ 符号运算表示法如果一个信号或函数可以用符号表达式来表示,那么我们就可以用前面介绍的符号函数专用绘图命令ezplot()等函数来绘出信号的波形。
⑶ 常见信号的MATLAB 表示对于普通的信号,应用以上介绍的两种方法即可完成计算函数值或绘制波形,但是对于一些比较特殊的信号,比如单位阶跃信号(t)、符号函数sgn(t)等,在MATLAB 中这些信号都有专门的表示方法。
单位阶跃信号单位阶跃信号的定义为:10()0t t t ε>⎧=⎨<⎩ ,单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着非常重要的作用,通常,我们用它来表示信号的定义域,简化信号的时域表示形式。
例如:可以用两个不同延时的单位阶跃信号来表示一个矩形门信号,即:2()(1)(1)G t t t εε=+--在MATLAB 中,可通过多种方法得到单位阶跃信号,下面分别介绍。
方法一: 调用Heaviside(t)函数在MATLAB 的Symbolic Math Toolbox 中,有专门用于表示单位阶跃信号的函数,即Heaviside(t)函数,用它即可方便地表示出单位阶跃信号以及延时的单位阶跃信号,并且可以方便地参加有关的各种运算过程。
首先定义函数Heaviside(t) 的m 函数文件,该文件名应与函数名同名即Heaviside.m 。
%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为y function y= Heaviside(t)y=(t>0); %定义函数体,即函数所执行指令%此处定义t>0时y=1,t<=0时y=0,注意与实际阶跃信号定义的区别。
方法二:数值计算法在MATLAB 中,有一个专门用于表示单位阶跃信号的函数,即stepfun( )函数,它是用数值计算法表示的单位阶跃函数()t ε。
其调用格式为:stepfun(t,t0)其中,t 是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。
有趣的是它同时还可以表示单位阶跃序列()k ε,这只要将自变量以及取样间隔设定为整数即可。
有关单位阶跃序列()k ε的表示方法,我们后面有专门论述,下面通过一个例子来说明如何调用stepfun( )函数来表示单位阶跃函数。
符号函数符号函数的定义为:10sgn()1t t t >⎧=⎨-<⎩在MATLAB 中有专门用于表示符号函数的函数sign() ,由于单位阶跃信号(t)和符号函数两者之间存在以下关系:1122()sgn()t t ε=+,因此,利用这个函数就可以很容易地生成单位阶跃信号。
下面举个例子来说明如何利用sign()函数生成单位阶跃信号,并同时绘制其波形。
2.离散时间信号离散时间信号又叫离散时间序列,一般用()f k 表示,其中变量k 为整数,代表离散的采样时间点(采样次数)。
三.实验内容1.分别用MATLAB 的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:(2)[]()cos()()(4)2tf t t t πεε=--syms t;f=sym('cos(t)*pi*t/2*[heaviside(t)-heaviside(t-4)]'); ezplot(f,[-2,8]);(4)23()(2)f t t t ε=+ syms t;f=sym('2/3*t*heaviside(t+2)'); ezplot(f,[-4,8]);2.分别用MATLAB 表示并绘出下列离散时间信号的波形: (2)[]()()(8)f t k k k εε=-- t=0:8; t1=-10:15;f=[zeros(1,10),t,zeros(1,7)]; stem(t1,f)axis([-10,15,0,10])(4) ()(2)f k k ε=-+ t=-20:10;f=[ones(1,23),zeros(1,8)]; stem(t,f) stem(t,f)3.已知信号f (t)的波形如下图所示,试用MATLAB 绘出满足下列要求的信号波形。
(2)(2)f t - t=-1:0.01:4; t0=0; t1=1; t2=2;ut=2*stepfun(t,t0)-2*stepfun(t,t1)+stepfun(t,t1)-stepfun(t,t2); plot(t-2,ut) axis([-3,2,0,3])f t(4)(0.51)t=-1:0.01:4;t0=0;t1=1; t2=2;ut=2*stepfun(t,t0)-2*stepfun(t,t1)+stepfun(t,t1)-stepfun(t,t2); plot(0.5*t+1,ut)axis([-1,2,0,4])4.已知两信号1()(1)()f t t t εε=+-,2()()(1)f t t t εε=--,求卷积积分12()()()g t f t f t =*,并与例题比较。
程序清单:t1=-1:0.01:0; t2=0:0.01:1; t3=3:0.01:5;f1=ones(size(t1)); f2=ones(size(t2)); g=conv(f1,f2); plot(t3,g) 信号波形:5.已知两信号1()()f t t t ε=,20()()0t tt te t f t t e ε-≥⎧=⎨<⎩,求卷积积分12()()()g t f t f t =*。
程序代码:t1=0:0.01:5;t2=-5:0.01:5; t3=-5:0.01:10; f1=t1;f2=exp(t2).*(t2<0)+t2.*exp(-t2).*(t2>=0); g=conv(f1,f2); plot(t3,g); 运行结果截图:6.已知{}{}12()1,1,1,2,()1,2,3,4,5f k f k ==,求两序列的卷积和 。
程序清单:f1=[1,1,1,2,0]; f2=[1,2,3,4,5]; f=conv(f1,f2); x=0:8;stem(x,f,'filled') 信号波形:实验二 LTI 系统的响应一、实验目的1. 熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法2. 熟悉连续(离散)时间系统在任意信号激励下响应的求解方法3. 熟悉应用MATLAB 实现求解系统响应的方法二、实验原理1.连续时间系统对于连续的LTI 系统,当系统输入为f (t ),输出为y (t ),则输入与输出之间满足如下的线性常系数微分方程:()()0()()nmi j i j i j a y t b f t ===∑∑,当系统输入为单位冲激信号δ(t )时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。
若输入为单位阶跃信号ε(t )时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。
系统的单位冲激响应h (t )包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。
我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。
因此,求解系统的冲激响应h(t )对我们进行连续系统的分析具有非常重要的意义。
在MATLAB 中有专门用于求解连续系统冲激响应和阶跃响应, 并绘制其时域波形的函数impulse( ) 和step( )。
如果系统输入为f (t ),冲激响应为h(t),系统的零状态响应为y (t ),则有:()()()y t h t f t =*。
若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。
但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。
在MATLAB 中,应用lsim( )函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求出系统在任意激励信号作用下的响应。
lsim( )函数不仅能够求出连续系统在指定的任意时间范围内系统响应的数值解,而且还能同时绘制出系统响应的时域波形图。