您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 信号与系统上机实验题全解
信号与系统实验报告目录班级:姓名:学号:成绩:指导教师:实验一:一、实验目的二、实验原理三、抄写实验内容,写出程序清单四、记录信号波形实验二:一、实验目的、二、实验原理三、抄写实验内容,写出程序清单四、记录信号波形实验三:一、实验目的二、实验原理三、抄写实验内容,写出程序清单四、记录信号波形实验四:一、实验目的二、实验原理三、抄写实验内容,写出程序清单四、记录信号波形总结心得参考文献(实验要求:每个实验都按照目录的格式填写完整,总结最后一起写。参考文献最好要写,二级标题为宋体三号字体宋体四号标题的格式按照现有文件格式文件名为学号加姓名)实验一常见信号的MATLAB表示及运算一、实验目的1、熟悉常见信号的意义、特性及波形;2、学会使用MATLAB表示信号的方法并绘制信号波形;3、掌握使用MATLAB进行信号基础运算的指令;4、熟悉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的取值范围:-10~10,取样间隔为0.5,%则t1是一个维数为41的行向量f1=sin(t1)./t1;%定义信号表达式,求出对应采样点上的样值,%同时生成与向量t1维数相同的行向量f1figure(1);%打开图形窗口1plot(t1,f1);%以t1为横坐标,f1为纵坐标绘制f1的波形t2=-10:0.1:10;%定义时间t的取值范围:-10~10,取样间隔为0.1,%则t2是一个维数为201的行向量f2=sin(t2)./t2;%定义信号表达式,求出对应采样点上的样值%同时生成与向量t2维数相同的行向量f2figure(2);%打开图形窗口2plot(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]);%绘制波形,并且设置坐标轴显示范围运行结果如下:图1-3⑶常见信号的MATLAB表示对于普通的信号,应用以上介绍的两种方法即可完成计算函数值或绘制波形,但是对于一些比较特殊的信号,比如单位阶跃信号(t)、符号函数sgn(t)等,在MATLAB中这些信号都有专门的表示方法。单位阶跃信号单位阶跃信号的定义为:10()00ttt,单位阶跃信号是信号分析的基本信号之一,在信号与系统分析中有着非常重要的作用,通常,我们用它来表示信号的定义域,简化信号的时域表示形式。例如:可以用两个不同延时的单位阶跃信号来表示一个矩形门信号,即:2()(1)(1)Gttt在MATLAB中,可通过多种方法得到单位阶跃信号,下面分别介绍。方法一:调用Heaviside(t)函数在MATLAB的SymbolicMathToolbox中,有专门用于表示单位阶跃信号的函数,即Heaviside(t)函数,用它即可方便地表示出单位阶跃信号以及延时的单位阶跃信号,并且可以方便地参加有关的各种运算过程。首先定义函数Heaviside(t)的m函数文件,该文件名应与函数名同名即Heaviside.m。%定义函数文件,函数名为Heaviside,输入变量为x,输出变量为yfunctiony=Heaviside(t)y=(t0);%定义函数体,即函数所执行指令;%此处定义t0时y=1,t=0时y=0,注意与实际的阶跃信号定义的区别。方法二:数值计算法在MATLAB中,有一个专门用于表示单位阶跃信号的函数,即stepfun()函数,它是用数值计算法表示的单位阶跃函数()t。其调用格式为:stepfun(t,t0)其中,t是以向量形式表示的变量,t0表示信号发生突变的时刻,在t0以前,函数值小于零,t0以后函数值大于零。有趣的是它同时还可以表示单位阶跃序列()k,这只要将自变量以及取样间隔设定为整数即可。有关单位阶跃序列()k的表示方法,我们后面有专门论述,下面通过一个例子来说明如何调用stepfun()函数来表示单位阶跃函数。三、抄写实验内容,写出程序清单。1.分别用MATLAB的向量表示法和符号运算功能,表示并绘出下列连续时间信号的波形:(2)()cos()()(4)2tftttt=-2:0.01:8;t1=0;u1=stepfun(t,t1);t2=4;u2=stepfun(t,t2);g=u1-u2;f=(cos(pi*t./2)).*g;plot(t,f)axis([-2,8,-2,2])⑷23()(2)ftttt=-8:0.01:10;t1=-2;u1=stepfun(t,t1);f=(2/3).*t.*u1;plot(t,f)axis([-8,10,-6,6])2.分别用MATLAB表示并绘出下列离散时间信号的波形:⑵()()(8)ftkkkk1=-5;k2=10;k0=0;k3=8k=k1:-k0-1;kk=-k0:k3;kkk=k3+1:k2;n=length(k);nn=length(kk);nnn=length(kkk);u=zeros(1,n);uu=ones(1,nn);uuu=zeros(1,nnn);stem(k,u,'filled')holdonstem(kk,kk,'filled')holdonstem(kkk,uuu,'filled')holdoffaxis([k1,k2,0,10])⑷()(2)fkkk1=-10;k2=10;k0=2;k=k1:-k0;kk=-k0+1:k2;n=length(k);nn=length(kk);u=ones(1,n);uu=zeros(1,nn);stem(k,u,'filled')holdonstem(kk,uu,'filled')holdoffaxis([k1,k2,0,2])3.已知信号f(t)的波形如下图所示,试用MATLAB绘出满足下列要求的信号波形。⑵(2)ftt=-3:0.01:7;t1=2;u1=stepfun(t,t1);t2=3;u2=stepfun(t,t2);t3=4;u3=stepfun(t,t3);g=2*u1-u2-u3;plot(t,g)axis([-3,7,-2,4])⑷(0.51)ftt=-5:0.01:5;t1=0-1;u1=stepfun(t,t1);t2=1/2-1;u2=stepfun(t,t2);t3=1-1;u3=stepfun(t,t3);g=2*u1-u2-u3;plot(t,g)axis([-5,5,-2,4])4.已知两信号1()(1)()fttt,2()()(1)fttt,求卷积积分12()()()gtftft,并与例题比较。t1=-1:0.01:0;t2=0:0.01:1;t3=-1:0.01:1;f1=ones(size(t1));f2=ones(size(t2));g=conv(f1,f2);plot(t3,g);5.已知两信号1()()fttt,20()()0ttttetftte,求卷积积分12()()()gtftft。t1=0:0.01:5;t2=-5:0.01:5;t3=-5:0.01:10;f1=t1;f2=exp(t2).*(t20)+t2.*exp(-t2).*(t2=0);g=conv(f1,f2);plot(t3,g);6.已知12()1,1,1,2,()1,2,3,4,5fkfk,求两序列的卷积和。f1=[1,1,2];f2=[1,2,3,4,5];g=conv(f1,f2);N=length(g);stem(0:N-1,g);四、记录信号波形1、(2)1、(4)2、(2)2、(4)3、(2)3、(4)4、5、6、实验二LTI系统的响应一、实验目的1.熟悉连续时间系统的单位冲激响应、阶跃响应的意义及求解方法2.熟悉连续(离散)时间系统在任意信号激励下响应的求解方法3.熟悉应用MATLAB实现求解系统响应的方法二、实验原理1.连续时间系统对于连续的LTI系统,当系统输入为f(t),输出为y(t),则输入与输出之间满足如下的线性常系数微分方程:()()00()()nmijijijaytbft,当系统输入为单位冲激信号δ(t)时产生的零状态响应称为系统的单位冲激响应,用h(t)表示。若输入为单位阶跃信号ε(t)时,系统产生的零状态响应则称为系统的单位阶跃响应,记为g(t),如下图所示。系统的单位冲激响应h(t)包含了系统的固有特性,它是由系统本身的结构及参数所决定的,与系统的输入无关。我们只要知道了系统的冲激响应,即可求得系统在不同激励下产生的响应。因此,求解系统的冲激响应h(t)对我们进行连续系统的分析具有非常重要的意义。在MATLAB中有专门用于求解连续系统冲激响应和阶跃响应,并绘制其时域波形的函数impulse()和step()。如果系统输入为f(t),冲激响应为h(t),系统的零状态响应为y(t),则有:()()()ythtft。若已知系统的输入信号及初始状态,我们便可以用微分方程的经典时域求解方法,求出系统的响应。但是对于高阶系统,手工计算这一问题的过程非常困难和繁琐。在MATLAB中,应用lsim()函数很容易就能对上述微分方程所描述的系统的响应进行仿真,求
本文标题:信号与系统上机实验题全解
链接地址:https://www.777doc.com/doc-2690954 .html