数字信号处理实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验2离散信号的运算与分析一、实验目的:1、掌握使用MATLAB建立基本函数的方法;2、学习MATLAB中的相关信号分析的函数的使用;3、掌握离散时间信号的运算,包括加、乘、卷和等运算原理;4、使用MATLAB编制实现离散信号运算的函数;二、实验原理:1、离散信号的四则运算一.序列加减:序列的对应相同序位值的信号值加减运算,信号的减法运算可等效看成加法运算。二.序列乘除:序列的对应相同序位值的信号值乘除运算,信号的除法运算可等效看成乘法运算。2、离散信号的移位、反转运算一、移位运算:序列x(n)平移0x个序位,设y(n)是移位后的序列,即有0n)()(0)()(y)()(00000nnxnynnnxnnnxny个单位,当序列超前于个单位,当序列延迟于二、反转运算:x(n)是指其自变量上乘以“-1”,设序列y(n)为反转后的序列,那么就有y(n)=x(-n)从波形上来看,就是序列的波形绕着信号轴旋转180度。3、离散信号的卷和运算设发生卷和运算的序列为x(n)、h(n),设卷和运算结果为y(n),则有mmmnxmhmnhmxnhnxny)()()()()()()(三、实验内容1、使用MATLAB建立实现单位取样序列与阶跃序列的函数(1)实现单位取样序列的函数;function[x,n]=impseq(n0,n1,n2)%generatex(n)=delta(n-n0);n1=n=n2;%[x,n]=impseq(n0,n1,n2)%n=[n1:n2];x=[(n-n0)==0];(2)实现单位阶跃序列的函数;function[x,n]=stepseq(n0,n1,n2)%generates)0()(nnx;n1=n=n2;%[x,n]=stepseq(n0,n1,n2)%n=[n1:n2];x=[(n-n0)=0];(3)使用上面的函数绘制)2()(1nnx与)2()(2nnx这两个序列的波形;程序:n0=-2;n1=-3;n2=3;[x1,n]=impseq(n0,n1,n2);[x2,n]=stepseq(n0,n1,n2);subplot(211),stem(n,x1);subplot(212),stem(n,x2);波形图:2、信号的周期性延拓,设一有限长序列x(n),其长度为N,对于此非周期序列,可以N为周期,将其延拓成为一个周期序列,既有)()(mNnxnx。设一有限长序列x(n)={5,4,3,2,1}0,其长度为5,将其延拓成为一个周期5的周期序列,x(n)={…,5,4,3,2,1,5,4,3,2,1,…}。(注意:至少延拓出四个周期)。程序:n=[-10:9];x=[5,4,3,2,1];y=x'*ones(1,4);y=(y(:))';stem(n,y,'b.-')xlabel('n');ylabel('y(n)');holdon;波形图:3、编制实现信号加、乘、反转、移位运算的函数;使用帮助功能学习所编制函数中调用的MATLAB里面包含的函数find、min、max、fliplr。①function[y,ny]=seq_add(x,nx,h,nh)%----------%[y,ny]---addingresult%[x,nx]---firstsignal%[y,ny]---secondsignal%”find”isafunctionwhichfindindicesofnonzeroelements,andit’sused%herenyb=min(min(nx),min(nh));nye=max(max(nx),max(nh));ny=[nyb:nye];y=zeros(1,length(ny));y1=y;y2=y;y1(find(ny=(min(nx))&ny=(max(nx))==1))=x;y2(find(ny=(min(nh))&ny=(max(nh))==1))=h;y=y1+y2;②function[y,ny]=seq_multiply(x,nx,h,nh)%-----------------%[y,ny]---multiplyingresult%[x,nx]---firstsignal%[y,ny]---secondsingal%”find”isafunctionwhichindicesofnonzeroelements,andit’sused%herenyb=min(min(nx),min(nh));nye=max(max(nx),max(nh));ny=[nyb:nye];y=zeros(1,length(ny));y1=y;y2=y;y1(find(ny=(min(nx))&ny=(max(nx))==1))=x;y2(find(ny=(min(nh))&ny=(max(nh))==1))=h;y=y1.*y2;③function[y,ny]=seq_shift(x,nx,n0)%-----------------%[y,ny]---multiplyingresult%[x,nx]---inputsignal%n0-----shiftednumberny=nx+n0;y=x;④function[y,ny]=seq_hold(x,nx)%-----------------%[y,ny]---y(n)=x(-n)%[x,nx]---inputsignal%-----ny=-fliplr(nx);y=fliplr(x);4、编制实现任意有限长序列的卷和的函数;使用帮助功能学习所编制函数中调用的MATLAB里面包含的卷和计算函数conv.function[y,ny]=seq_conv_m(x,nx,h,nh)%modifiedconvolutionfunction%[y,ny]---convolutionresult%[x,nx]---firstsignal%[h,nh]---secondsignal%------------nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv_m(x,nx,h,nh);例子:教材P26例6.用MATLAB计算序列{-201–13}0和序列{120-1}0的离散卷积。教材中程序如下:程序:a=[-201-13];b=[120-1];c=conv(a,b);M=length(c)-1;n=0:1:M;stem(n,c);xlabel('n');ylabel('幅度');波形图:例子:使用所编制函数seq_conv_m实现序列[1,2,3]0和[1,1,1,1]0的卷和;程序:nz=[0:2];nw=[0:3];z=(nz+1).*((nz=0)-(nz-length(nz)=0));w=ones(1,length(nw)).*((nw-nw(1)=0)-(nw-length(nw)=0));q1=conv(z,w);figure(1);stem(q1);[q2,nq2]=conv_m(z,nz,w,nw);;figure(2);stem(nq2,q2);波形图:四、实验习题:1、用函数stepseq、impseq实现如下序列,绘制序列的波形。①),4()2(2)(1nnnx-5=n=5程序:n1=[-5:5];x1=2*impseq(-2,-5,5)-impseq(-4,-5,5);stem(n1,x1,'r+');title('序列x1');xlabel('n1');ylabel('x1(n)');holdon;波形图:②)],10()([)(2nnnnx0=n=20;程序:n2=[0:20];x2=n2.*(stepseq(0,0,20)-stepseq(10,0,20));stem(n2,x2);title('序列x2');xlabel('n2');ylabel('x2(n)');holdon;波形图:2、实现一指数序列(如下)自身相乘、相加,并求序列的能量;绘出相乘、相加后信号的波形。设此指数序列为))10()(()(nnanxn(其中a值自定)。信号的能量计算公式为2)(nnxE(使用帮助文件学习MATLAB中的函数sum与abs,这两个函数可嵌套使用,即sum(abs(x).^2),然后求信号的能量。(1)两序列相乘程序:n1=[0:20];x1=2.^n1.*(stepseq(0,0,20)-stepseq(10,0,20));x2=x1.*x1;stem(n1,x2);title('序列x2');xlabel('n1');ylabel('x2(n)');holdon;波形图:(2)两序列相加程序:n2=[0:20];x1=2.^n2.*(stepseq(0,0,20)-stepseq(10,0,20));x3=x1+x1;stem(n1,x3);title('序列x3');xlabel('n2');ylabel('x3(n)');holdon;波形图:(3)序列能量程序:n1=[0:20];x1=2.^n1.*(stepseq(0,0,20)-stepseq(10,0,20));E=sum(abs(x1).^2)结果:E=3495253、嵌套调用“实验内容”里面的函数,编写一个把实数序列分解成奇、偶序列的函数;4、以实现序列[1,2,3]-1和[1,1,1,1]-2的卷和;比较卷积和计算函数conv(x,h)与conv_m(x,nx,h,nh)计算结果,判断这两个函数的差别?程序:(1)nz=[-1:1];nw=[-2:1];z=(nz+1).*((nz=0)-(nz-length(nz)=0));w=ones(1,length(nw)).*((nw-nw(1)=0)-(nw-length(nw)=0));q1=conv(z,w);figure(1);stem(q1);(2)nz=[-1:1];nw=[-2:1];z=(nz+1).*((nz=0)-(nz-length(nz)=0));w=ones(1,length(nw)).*((nw-nw(1)=0)-(nw-length(nw)=0));[q2,nq2]=seq_conv_m(z,nz,w,nw);figure(2);stem(nq2,q2);波形图对比:5、使用“实验内容”中涉及到的函数计算教材P36.1-14题1.14试用直接计算法求下下面两个序列的线性卷积y(n)=x1(n)*x2(n),并画出卷积过程图。(1)x1(n)=δ(n)+2δ(n+2)-δ(n-4);x2(n)=2δ(n-1)+δ(n-3)程序:n1=[-5:5];x1=impseq(0,-5,5)+impseq(-2,-5,5)-impseq(4,-5,5);x2=2*impseq(1,-5,5)+impseq(3,-5,5);x=conv(x1,x2);M=length(x)-1;n=0:1:M;stem(n,x);xlabel('n1');ylabel('幅度');holdon;波形图:(2)x1(n)=0.5nu(n);x2(n)=R5(n)程序:n=0:10;x1=0.5.^n.*stepseq(0,0,10);x2=double(n)-double(n-5);x=conv(x1,x2);stem(n1,x,'r+');xlabel('n1');ylabel('幅度');holdon;波形图:(3)x1(n)=2nR4(n);x2(n)=δ(n)-δ(n-2)程序:x1=2.^n.*double(n)-double(n-4);x2=impseq(0,0,10)-impseq(2,0,10);x=conv(x1,x2);stem(n1,x,'r+');xlabel('n1');ylabel('幅度');holdon;波形图:

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功