您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > MATLAB实验要求
1实验一常见信号的MATLAB表示一、实验目的1.熟悉常见信号的意义、特性及波形2.学会使用MATLAB表示信号的方法3.学会使用MATLAB绘制信号波形二、实验原理信号一般是随时间而变化的某些物理量。按照自变量的取值是否连续,信号分为连续时间信号和离散时间信号,一般用()ft和()fk来表示。若对信号进行时域分析,就需要绘制其波形,如果信号比较复杂,则手工绘制波形就变得很困难,且难以精确。MATLAB强大的图形处理功能及符号运算功能,为实现信号的可视化及其时域分析提供了强有力的工具。根据MATLAB的数值计算功能和符号运算功能,在MATLAB中,信号有两种表示方法,一种是用向量来表示,另一种则是用符号运算的方法。在采用适当的MATLAB语句表示出信号后,就可以利用MATLAB中的绘图命令绘制出直观的信号波形了。下面分别介绍连续时间信号和离散时间信号的MATLAB表示及其波形绘制方法。1、连续时间信号所谓连续时间信号,是指其自变量的取值是连续的,并且除了若干不连续的点外,对于一切自变量的取值,信号都有确定的值与之对应。从严格意义上讲,MATLAB并不能处理连续信号。在MATLAB中,是用连续信号在等时间间隔点上的样值来近似表示的,当取样时间间隔足够小时,这些离散的样值就能较好地近似出连续信号。在MATLAB中连续信号可用向量或符号运算功能来表示。⑴.向量表示法对于连续时间信号()ft,可以用两个行向量f和t来表示,其中向量t是用形如12::ttpt的命令定义的时间范围向量,其中,1t为信号起始时间,2t为终止时间,p为时间间隔。向量f为连续信号()ft在向量t所定义的时间点上的样值。例如:对于连续信号sin()()()tftSatt,我们可以将它表示成行向量形式,同时用绘图命令plot()函数绘制其波形。其程序如下:t1=-10:0.5:10;%定义时间t的取值范围及取样间隔(p=0.5),%则t1是一个维数为41的行向量f1=sin(t1)./t1;%定义信号表达式,求出对应采样点上的样值,%同时生成与向量t1维数相同的行向量f1figure(1);%打开图形窗口1plot(t1,f1);%以t1为横坐标,f1为纵坐标绘制f1的波形t2=-10:0.1:10;%定义时间t的取值范围及取样间隔(p=0.1),%则t2是一个维数为201的行向量f2=sin(t2)./t2;%定义信号表达式,求出对应采样点上的样值%同时生成与向量t2维数相同的行向量f2figure(2);%打开图形窗口22plot(t2,f2);%以t2为横坐标,f2为纵坐标绘制f2的波形运行结果如下:图1-1图1-2说明: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()等函数来绘出信号的波形。例如:对于连续信号sin()()()tftSatt,我们也可以用符号表达式来表示它,同时用ezplot()命令绘出其波形。其MATLAB程序如下:symst;%符号变量说明f=sin(t)/t;%定义函数表达式ezplot(f,[-10,10]);%绘制波形,并且设置坐标轴显示范围运行结果如下:3图1-3⑶.常见信号的MATLAB表示对于普通的信号,应用以上介绍的两种方法即可完成计算函数值或绘制波形,但是对于一些比较特殊的信号,比如单位阶跃信号(t)、符号函数sgn(t)等,在MATLAB中这些信号都有专门的表示方法。单位阶跃信号单位阶跃信号的定义为:10()00ttt单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着非常重要的作用,通常,我们用它来表示信号的定义域,简化信号的时域表示形式。例如:可以用两个不同延时的单位阶跃信号来表示一个矩形门信号,即:2()(1)(1)Gttt在MATLAB中,可通过多种方法得到单位阶跃信号,下面分别介绍之。方法一:调用Heaviside(t)函数在MATLAB的SymbolicMathToolbox中,有专门用于表示单位阶跃信号的函数,即Heaviside(t)函数,用它即可方便地表示出单位阶跃信号以及延时的单位阶跃信号,并且可以方便地参加有关的各种运算过程。例①.用MATLAB画出单位阶跃信号的波形,其程序如下:ut=sym('Heaviside(t)');%定义单位阶跃信号(要用符号函数定义法)ezplot(ut,[-2,10])%绘制单位阶跃信号在-2~10范围之间的波形运行结果如下:例②.用MATLAB画出信号()(2)3(5)fttt的波形其程序如下:f=sym('Heaviside(t+2)-3*Heaviside(t-5)');%定义函数表达式ezplot(f,[-4,20])%绘制函数在-2~10范围之间的波形4运行结果如下:方法二:数值计算法在MATLAB中,有一个专门用于表示单位阶跃信号的函数,即stepfun()函数,它是用数值计算法表示的单位阶跃函数()t。其调用格式为:stepfun(t,t0)其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。有趣的是它同时还可以表示单位阶跃序列()k,这只要将自变量以及取样间隔设定为整数即可达到。有关单位阶跃序列()k的表示方法,我们后面有专门论述,下面通过一个例子来说明如何调用stepfun()函数来表示单位阶跃函数。例①:用stepfun()函数表示单位阶跃信号,并绘出其波形程序如下:t=-1:0.01:4;%定义时间样本向量t0=0;%指定信号发生突变的时刻ut=stepfun(t,t0);%产生单位阶跃信号plot(t,ut)%绘制波形axis([-1,4,-0.5,1.5])%设定坐标轴范围运行结果如下:例②:绘出门函数()(2)(2)fttt的波形程序如下:t=-4:0.01:4;%定义时间样本向量t1=-2;%指定信号发生突变的时刻u1=stepfun(t,t1);%产生左移位的阶跃信号(t+2)t2=2;%指定信号发生突变的时刻u2=stepfun(t,t2);%产生右移位的阶跃信号(t-2)g=u1-u2;%表示门函数5plot(t,g)%绘制门函数的波形axis([-4,4,-0.5,1.5])%设定坐标轴范围-4x4,-0.5y1.5运行结果如下:符号函数符号函数的定义为:10sgn()10ttt在MATLAB中有专门用于表示符号函数的函数sign(),由于单位阶跃信号(t)和符号函数两者之间存在以下关系:1122()sgn()tt,因此,利用这个函数就可以很容易地生成单位阶跃信号。下面举个例子来说明如何利用sign()函数生成单位阶跃信号,并同时绘制其波形。举例:利用sign()函数生成单位阶跃信号,并分别绘出两者的波形MATLAB程序如下:t=-5:0.01:5;%定义自变量取值范围及间隔,生成行向量tf=sign(t);%定义符号信号表达式,生成行向量ffigure(1);%打开图形窗口1plot(t,f),%绘制符号函数的波形axis([-5,5,-1.5,1.5])%定义坐标轴显示范围s=1/2+1/2*f;%生成单位阶跃信号figure(2);%打开图形窗口2plot(t,s),axis([-5,5,-0.5,1.5])%定义坐标轴显示范围运行结果如下:62、离散时间信号离散时间信号又叫离散时间序列,一般用()fk表示,其中变量k为整数,代表离散的采样时间点(采样次数)。在MATLAB中,离散信号的表示方法与连续信号不同,它无法用符号运算法来表示,而只能采用数值计算法表示,由于MATLAB中元素的个数是有限的,因此,MATLAB无法表示无限序列;另外,在绘制离散信号时必须使用专门绘制离散数据的命令,即stem()函数,而不能用plot()函数。下面通过一些常用离散信号来说明如何用MATLAB来实现离散信号的表示,以及可视化。单位序列(k)单位序列(k)的定义为10()00kkk下面是用MATLAB绘制单位序列(k)的MATLAB程序:k1=-5;k2=5;%定义自变量的取值范围k=k1:k2;%定义自变量的取值范围及取样间隔(默认为1),并生成行向量n=length(k);%取向量的维数f=zeros(1,n);%生成与向量k的维数相同的零矩阵,给函数赋值f(1,6)=1;%在k=0时刻,信号赋值为1stem(k,f,'filled')%绘制波形axis([k1,k2,0,1.5])%定义坐标轴显示范围运行结果如下:如果要绘制移位的单位序列(k+k0)的波形,只要将以上程序略加修改即可,例如要绘制信号(k+3)的图形,可将以上程序改为:k1=-5;k2=5;%定义自变量的取值范围k0=3;%定义平移量k=k1:k2;%定义自变量的取值范围及取样间隔(默认为1),并生成行向量n=length(k);%取向量的维数7f=zeros(1,n);%生成与向量k的维数相同的零矩阵,给函数赋值f(1,-k0-k1+1)=1;%在k=k0时刻,信号赋值为1stem(k,f,'filled')%绘制波形axis([k1,k2,0,1.5])%定义坐标轴显示范围单位阶跃序列(k)单位阶跃序列(k)的定义为10()00kkk下面是绘制单位阶跃序列(k+k0)的MATLAB程序:k1=-3;k2=10;k0=0;k=k1:-k0-1;kk=-k0:k2;n=length(k);%取k=k0点以前向量的维数nn=length(kk);%取k=k0点以后(含k=k0点)向量的维数u=zeros(1,n);%在k=k0以前,信号赋值为零uu=ones(1,nn);%在k=k0以后,信号赋值为一stem(k,u,'filled')%绘制k=k0以前信号的波形holdon%保持图形窗口,以便绘制多个图形stem(kk,uu,'filled')%绘制k=k0以后(含k=k0点)信号的波形holdoff%图形窗口解冻axis([k1,k2,0,1.5])%设置坐标轴显示范围运行结果如下:注意:以上介绍了几个常用的绘图命令:plot,ezplot,stairs,stem,其中,绘制连续信号得到光滑的曲线时用plot命令;显示连续信号中的不连续点时用stairs命令较好;绘制离散信号波形用stem命令;当绘制用MATLAB符号表达式表达的信号时要用ezplot命令。三、实验内容1、分别用MATLAB的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:⑴2()(2)()tftet⑵()cos()()(4)2tftttt⑶()cos()()tftett8⑷23()(2)fttt2、分别用MATLAB表示并绘出下列离散时间信号的波形:⑴12()()kfkk⑵()()(8)ftkkk⑶()sin()()4kfkk⑷()(2)fkk3、已知信号f(t)的波形如下图所示,试用MATLAB绘出满足下列要求的信号波形。⑴()ft⑵(2)ft⑶()fat(其中a的值分别为a=0.5和a=2)四、预习要求1、
本文标题:MATLAB实验要求
链接地址:https://www.777doc.com/doc-2887685 .html