实验一离散时间信号的表示及运算一、实验目的1、学会运用MATLAB表示的常用离散时间信号;2、学会运用MATLAB实现离散时间信号的基本运算。二、实验原理及实例分析2.1离散时间信号在MATLAB中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。离散序列通常用x(n)来表示,自变量n必须是整数。离散时间信号的波形绘制在MATLAB中一般用stem()函数(注释:stem中文意思是茎、干、柄)。stem()函数的基本用法和plot()函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。如果要实心,需使用参数“fill”、“filled”,或者参数“.”。由于MATLAB中矩阵元素的个数有限,所以MATLAB只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。0、判断n是否为整数functiony=isInt(n)y=(n==fix(n));%fix(n)为取整运算end1、单位取样序列单位取样序列)(n,也称为单位冲激序列,定义为)0()0(01)(nnn(1)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0处是取确定的值1。在MATLAB中,冲激序列可以通过编写以下的impDT.m文件来实现,即functiony=impDT(n)y=(n==0);%当参数n为0时冲激为1,否则为0end调用该函数时n必须为整数或整数向量。【实例1】利用MATLAB的impDT函数绘出单位冲激序列的波形图。解:MATLAB源程序为n=-3:3;%n=[-3,-2,-1,0,1,2,3]x=impDT(n);stem(n,x,'fill'),xlabel('n'),gridontitle('单位冲激序列')axis([-33-0.11.1])程序运行结果如图1所示。2、单位阶跃序列单位阶跃序列)(nu定义为)0()0(01)(nnnu(2)在MATLAB中,冲激序列可以通过编写uDT.m文件来实现,即functiony=uDT(n)y=n=0;%当参数为非负时输出1调用该函数时n也同样必须为整数或整数向量。【实例2】利用MATLAB的uDT函数绘出单位阶跃序列的波形图。解:MATLAB源程序为n=-3:5;x=uDT(n);stem(n,x,'fill'),xlabel('n'),gridon图1单位冲激序列title('单位阶跃序列')axis([-35-0.11.1])程序运行结果如图2所示。3、矩形序列矩形序列)(nRN定义为),0()10(01)(NnnNnnRN(3)矩形序列有一个重要的参数,就是序列宽度N。)(nRN与)(nu之间的关系为)()()(NnununRN因此,用MATLAB表示矩形序列可利用上面所讲的uDT函数。【实例3】利用MATLAB命令绘出矩形序列)(5nR的波形图。解:MATLAB源程序为n=-3:8;x=uDT(n)-uDT(n-5);stem(n,x,'fill'),xlabel('n'),gridontitle('矩形序列')axis([-38-0.11.1])程序运行结果如图3所示。图2单位阶跃序列4、单边指数序列单边指数序列定义为)()(nuanxn(4)【实例4】试用MATLAB命令分别绘制单边指数序列)(2.1)(1nunxn、)()2.1()(2nunxn、)()8.0()(3nunxn、)()8.0()(4nunxn的波形图。解:MATLAB源程序为n=0:10;a1=1.2;a2=-1.2;a3=0.8;a4=-0.8;x1=a1.^n;x2=a2.^n;x3=a3.^n;x4=a4.^n;subplot(221)stem(n,x1,'fill'),gridonxlabel('n'),title('x(n)=1.2^{n}')subplot(222)stem(n,x2,'fill'),gridonxlabel('n'),title('x(n)=(-1.2)^{n}')subplot(223)stem(n,x3,'fill'),gridonxlabel('n'),title('x(n)=0.8^{n}')subplot(224)stem(n,x4,'fill'),gridonxlabel('n'),title('x(n)=(-0.8)^{n}')图3矩形序列单边指数序列n的取值范围为0n。程序运行结果如图4所示。从图可知,当1||a时单边指数序列发散;当1||a时,该序列收敛。当0a时,该序列均取正值;当0a时,序列在正负摆动。5、正弦序列正弦序列定义为)sin()(0nnx(5)其中,0是正弦序列的数字域频率;为初始相位。与连续的正弦信号不同,正弦序列的自变量n必须为整数。可以证明,只有当02为有理数时,正弦序列具有周期性。【实例5】试用MATLAB命令绘制正弦序列)6sin()(nnx的波形图。解:MATLAB源程序为n=0:39;x=sin(pi/6*n);stem(n,x,'fill'),xlabel('n'),gridontitle('正弦序列')axis([0,40,-1.5,1.5]);程序运行结果如图5所示。图4单边指数序列6、复指数序列复指数序列定义为njaenx)(0)((6)当0a时,得到虚指数序列njenx0)(,式中0是正弦序列的数字域频率。由欧拉公式知,复指数序列可进一步表示为)]sin()[cos()(00)(00njneeeenxannjannja(7)与连续复指数信号一样,我们将复指数序列实部和虚部的波形分开讨论,得出如下结论:(1)当0a时,复指数序列)(nx的实部和虚部分别是按指数规律增长的正弦振荡序列;(2)当0a时,复指数序列)(nx的实部和虚部分别是按指数规律衰减的正弦振荡序列;(3)当0a时,复指数序列)(nx即为虚指数序列,其实部和虚部分别是等幅的正弦振荡序列。【实例6】用MATLAB命令画出复指数序列njenx)6101(2)(的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。解:MATLAB源程序为n=0:30;A=2;a=-1/10;b=pi/6;x=A*exp((a+i*b)*n);subplot(2,2,1)stem(n,real(x),'fill'),gridon图5正弦序列title('实部'),axis([0,30,-2,2]),xlabel('n')subplot(2,2,2)stem(n,imag(x),'fill'),gridontitle('虚部'),axis([0,30,-2,2]),xlabel('n')subplot(2,2,3)stem(n,abs(x),'fill'),gridontitle('模'),axis([0,30,0,2]),xlabel('n')subplot(2,2,4)stem(n,angle(x),'fill'),gridontitle('相角'),axis([0,30,-4,4]),xlabel('n')程序运行后,产生如图6所示的波形。2.2离散时间信号的基本运算对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。【实例2-7】用MATLAB命令画出下列离散时间信号的波形图。(1)Nnunuanxn1;(2)312nxnx(3)213nxnx;(4)nxnx14解:设8.0a,8N,MATLAB源程序为a=0.8;N=8;n=-12:12;图6复指数序列x=a.^n.*(uDT(n)-uDT(n-N));n1=n;n2=n1-3;n3=n1+2;n4=-n1;subplot(411)stem(n1,x,'fill'),gridontitle('x1(n)'),axis([-151501])subplot(412)stem(n2,x,'fill'),gridontitle('x2(n)'),axis([-151501])subplot(413)stem(n3,x,'fill'),gridontitle('x3(n)'),axis([-151501])subplot(414)stem(n4,x,'fill'),gridontitle('x4(n)'),axis([-151501])其波形如图2-7所示。图2-7离散时间信号的基本运算及波形图三、实验任务1.试用MATLAB命令分别绘出下列各序列的波形图。(1)nunxn21(2)nunxn2(3)nunxn21(4)nunxn2(5)121nunxn(6)nunxn121(1)到(4)n=0:20;a1=1/2;a2=2;a3=-1/2;a4=-2;x1=a1.^n;x2=a2.^n;x3=a3.^n;x4=a4.^n;subplot(2,2,1)stem(n,x1,'fill'),gridonxlabel('n'),title('x(n)=(1/2)^n')subplot(2,2,2)stem(n,x2,'fill'),gridonxlabel('n'),title('x(n)=2^n')subplot(223)stem(n,x2,'fill'),gridonxlabel('n'),title('x(n)=(-1/2)^n')subplot(224)stem(n,x2,'fill'),gridonxlabel('n'),title('x(n)=(-2)^n')(5)n=0:20;a=2;x=a1.^(n-1);stem(n,x1,'fill'),gridonxlabel('n'),title('x(n)=(2)^(n-1)')(6)n=0:20a=1/2;x=a2.^(n-1);stem(n,x2,'fill'),gridonxlabel('n'),title('x(n)=(1/2)^(n-1)')2.试用MATLAB分别绘出下列各序列的波形图。(1)5sinnnx(2))510cos(nnx(3)5sin65nnxn(4)5sin23nnxn(1)n=0:30;x1=sin(pi/5*n);stem(n,x1,'fill'),xlabel('n'),gridontitle('x1(n)=sin(pi/5*n)')axis([0,30,-2,2]);(2)n=0:30;x=sin(pi/10*n-pi/5);stem(n,x,'fill'),xlabel('n'),gridontitle('(n)=sin(pi/5*n-pi/5)')axis([0,30,-2,2]);(3)n=0:30;x=(5/6).^n.*sin(pi/5*n);stem(n,x,'fill'),xlabel('n'),gridontitle('x(n)=5/6).^n.*sin(pi/5*n)')axis([0,30,-2,2]);(4)n=0:30;x=(3/2).^n.*sin(pi/5*n);stem(n,x,'fill'),xlabel('n'),gridontitle('x(n)=5/6).^n.