第1页共23页数字信号处理实验报告一、实验目的1、熟悉常用序列的时域表示方法和序列的运算方法;2、掌握用MATLAB表示序列和对序列进行运算的方法。二、实验原理1、离散时间信号是在离散时间上给出函数值,通常用序列来表示,序列是时间上不连续的一串样本值的集合,记为{x(n)}。{x(n)}可以是实数序列,也可以是复数序列。离散时间信号根据持续时间可分为有限长序列、右边序列、左边序列和双边序列。2、序列的运算序列的运算包括序列移位、翻褶、代数和、积、累加、差分、卷积和等。①序列移位:设有一序列为x(n),当m为正时,那么x(n-m)表示把原序列x(n)逐项依次延时m位(或右移m位)后,得到一个新的序列,这种运算称为序列的移位。同理,当m为正时,x(n+m)则表示依次超前m位(或左移m位)。②序列翻褶:如果某一序列为x(n),那么x(-n)是指以n=0的纵轴为对称轴,将原序列x(n)加以对褶,我们称之为序列翻褶。③两序列的代数和:两个序列的代数和是指将两个序列中具有相同序号(n)的序列值对应相加(减)而构成一个新的序列,表示为:z(n)=x(n)±y(n)。④两序列之积:两序列之积是指两序列中同序号(n)的序列值逐项对应相乘。表示为:z(n)=x(n)y(n)⑤序列的累加:设有一序列为x(n),那么x(n)的累加序列y(n)定义为:()()nkynxk它表示y(n)在某一时刻n0上的值等于在此时刻n0上的x(n0)值与n0以前的所有n个时刻上x(n)值的总和。⑥序列的差分运算:前向差分:一阶△x(n)=x(n+1)-x(n)后向差分:一阶▽x(n)=x(n)-x(n-1))()(),()(nTxnxnTxtxaanTta第2页共23页由此看出:▽x(n)=△x(n-1)⑦序列的时间尺度变换:如果有一序列x(n),其时间尺度变换为x(mn)或x(n/m),其中m为正整数。以m=2时,既x(2n)为例说明,x(2n)不是序列简单在时间轴上按比例增加一倍,而是以低一倍的采样频率从x(n)中每两点取一点,如果是连续时间信号x(t)采样,那么,这相当于将x(t)的采样间隔从T增加到2T,也就是说:假如x(n)=x(t)|t=nT,那么x(2n)=x(t)|t=n2T,即x(2n)时x(n)的采样序列。⑧两序列的卷积:假设有任意两个序列x(n)和h(n),那么x(n)和h(n)的卷积和定义为:()()()()()mynxmhnmxnhn3、几种常用序列①单位采样序列δ(n),也称单位冲激序列②单位阶跃序列u(n)1,0()0,0nunn③矩形序列④实指数序列()()nxnaun其中a为实数当a1时,序列是收敛的;当a1时,序列是发散的。⑤复指数序列第3页共23页或A为常数:x(n)具有实部与虚部;是复正弦的数字域频率。⑥正弦型序列00()cos()xnAnA式中为幅度,为数字域的频率,为起始相位。⑦任意序列的表示可以将任意序列表示成单位采样序列的移位加权和,即()()()mxnxmnm也可看成x(n)和δ(n)的卷积。三、实验内容及步骤(一)编制几种常用序列的实现程序:单位采样序列、单位阶跃序列、矩形序列、实指数序列、复指数序列、正弦型序列和任意序列的表示方法,并用图形表示结果。1、单位冲激函数M文件:function[x,n]=impseq(n0,n1,n2)n=[n1:n2];x=[(n-n0)==0];例2.1a:第4页共23页n=[-5:5];x=2*impseq(-2,-5,5)-impseq(4,-5,5);subplot(2,2,1);stem(n,x);title('例2.1a的序列')xlabel('n');ylabel('x(n)');如图:2、单位阶跃函数M文件:function[x,n]=stepseq(n0,n1,n2)n=[n1:n2];x=[(n-n0)=0];例2.1b:n=[0:20];x1=n.*(stepseq(0,0,20)-stepseq(10,0,20));x2=10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));x=x1+x2;subplot(2,2,2);stem(n,x);title('例2.1b的序列')xlabel('n');ylabel('x(n)');第5页共23页如图:3、矩形序列M文件:function[y,n]=rec(n0)n=[0:n0];y=[(n-n0+1)=0];例:n0=9;y=rec(n0);stem([0:n0],y)结果如图:第6页共23页4、实指数序列M文件:function[x,n]=szs(n0,n1,n2)n=[n1:n2];x=n0.^n;例:n=[0:10];x=szs(0.9,0,10);stem(n,x)title('实指数序列示意图');xlabel('n');ylabel('x');如图:第7页共23页5、复指数序列M文件:function[x,n]=fzs(n0,n1,n2,n3)n=[n1:n2];x=n0*exp(n3*j*n)例:n=[0:10];x=fzs(2,0,10,pi);stem(n,x);title('复指数序列示意图');xlabel('n');ylabel('x');如图:第8页共23页例2.3n=[-10:10];alpha=-0.1+0.3j;x=exp(alpha*n);subplot(2,2,1);stem(n,real(x));title('实部');xlabel('n')subplot(2,2,2);stem(n,imag(x));title('虚部');xlabel('n')subplot(2,2,3);stem(n,abs(x));title('振幅');xlabel('n')subplot(2,2,4);stem(n,(180/pi)*angle(x));title('相位');xlabel('n')结果如图:第9页共23页6、正弦型序列M文件:function[x,n]=sinu(n0,n1,n2,n3,n4)n=[n1:n2];x=n0*cos(n*n3+n4)例:n=[0:2*pi];x=sinu(2,0,2*pi,1,pi/4);stem(n,x);title('正弦型序列');xlabel('n');ylabel('x')如图:第10页共23页7、任意序列,可看作卷积形式,则有M文件:function[y,ny]=conv_m(x,nx,h,nh)nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);例:x=[3,11,7,0,-1,4,2];nx=[-3:3];h=[2,3,0,-5,2,1];nh=[-1:4];[y,ny]=conv_m(x,nx,h,nh)y=631476-51-54118-22-382ny=-4-3-2-101234567第11页共23页(二)编制程序实现序列的运算:移位、翻褶、代数和、乘积、累加、差分、时间尺度变换、卷积,并用图形表示结果。1、序列的相加M文件:function[y,n]=sigadd(x1,n1,x2,n2)n=min(min(n1),min(n2)):max(max(n1),max(n2));y1=zeros(1,length(n));y2=y1;y1(find((n=min(n1))&(n=max(n1))==1))=x1;y2(find((n=min(n2))&(n=max(n2))==1))=x2;y=y1+y2;例:n1=0:10;x1=[1:11];n2=0:8;x2=[2:10];[X1,N1]=sigadd(x1,n1,x2,n2);subplot(3,1,1);stem(n1,x1);title('x1序列')xlabel('n1');ylabel('x1');subplot(3,1,2);stem(n2,x2);title('x2序列')xlabel('n2');ylabel('x2');subplot(3,1,3);stem(N1,X1);title('序列的相加示意图')xlabel('N1');ylabel('Y1');第12页共23页结果如图:2、序列的移位M文件:function[y,n]=sigshift(x,m,n0)n=m+n0;y=x;例:n=-2:10;x=[1:7,6:-1:1];[x0,n0]=sigshift(x,n,5);subplot(2,1,1);stem(n,x);title('序列移位前');xlabel('n'),ylabel('x')第13页共23页subplot(2,1,2);stem(n0,x0);title('序列移位后');xlabel('n0'),ylabel('x0')结果如图:例2.2a:n=-2:10;x=[1:7,6:-1:1];[x11,n11]=sigshift(x,n,5);[x12,n12]=sigshift(x,n,-4);[x1,n1]=sigadd(2*x11,n11,-3*x12,n12);subplot(2,1,1);stem(n1,x1);title('例2.2a的序列')xlabel('n');ylabel('x1(n)');第14页共23页如图:3、序列的乘积M文件:function[y,n]=sigmult(x1,n1,x2,n2)n=min(min(n1),min(n2)):max(max(n1),max(n2));y1=zeros(1,length(n));y2=y1;y1(find((n=min(n1))&(n=max(n1))==1))=x1;y2(find((n=min(n2))&(n=max(n2))==1))=x2;y=y1.*y2;例:n1=0:10;x1=[1:11];n2=0:8;x2=[2:10];[y,n]=sigmult(x1,n1,x2,n2);subplot(3,1,1);stem(n1,x1);subplot(3,1,1);stem(n1,x1);title('x1序列');第15页共23页xlabel('n1'),ylabel('x1');subplot(3,1,2);stem(n2,x2);title('x2序列');xlabel('n2'),ylabel('x2');subplot(3,1,3);stem(n,y);title('x1,x2乘积后的序列');xlabel('n'),ylabel('y');结果如图:4、序列的翻褶M文件:function[x,n]=sigfold(y,m)n=-m;x=y;第16页共23页例:n=0:9;x=[1:10];[y,m]=sigfold(x,n);subplot(2,1,1);stem(n,x);title('序列翻褶前');xlabel('n'),ylabel('x');subplot(2,1,2);stem(m,y);title('序列翻褶后');xlabel('m'),ylabel('y');结果如图:第17页共23页例2.2b:n=-2:10;x=[1:7,6:-1:1];[x21,n21]=sigfold(x,n);[x21,n21]=sigshift(x21,n21,3);[x22,n22]=sigshift(x,n,2);[x22,n22