您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > matlab序列的运算
1实验三序列的运算一、实验内容1、序列的乘积:仿真并完成例题1.222、序列的移位:编写seqshift()函数,实现序列的移位,并作图验证。3、序列的卷积:编写convwthn()函数,实现具体序列的卷积,并且进行理论计算,比较结果。4、序列的相关:仿真并完成例题1.24二、MATLAB仿真1、序列的乘积解:function[y,n]=seqadd(x1,n1,x2,n2)n=min((n1),min(n2)):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;function[y,n]=seqmult(x1,n1,x2,n2);n=min((n1),min(n2)):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;代码:clc;clearall;x1=[1,3,5,7,6,4,2,1];ns1=-3;x2=[4,0,2,1,-1,3];ns2=1;nf1=ns1+length(x1)-1;nf2=ns2+length(x2)-1;n1=ns1:nf1;n2=ns2:nf2;n=min(ns1,ns2):max(nf1:nf2);y1=zeros(1,length(n));y2=y1;y1(find((n=ns1)&(n=nf1)==1))=x1;y2(find((n=ns2)&(n=nf2)==1))=x2;ya=y1+y2;ym=y1.*y2;2subplot(221);stem(n1,x1,'*','r');ylabel('x1(n)');grid;subplot(223);stem(n2,x2,'*','r');xlabel('n');ylabel('x2(n)');grid;subplot(222);stem(n,ya,'*','r');ylabel('y1(n)+y2(n)');grid;subplot(224);stem(n,ym,'*','r');xlabel('n');ylabel('y1(n)*y2(n)');grid;如图1所示。clc;clearall;x1=[1,3,5,7,6,4,2,1];ns1=-3;x2=[4,0,2,1,-1,3];ns2=1;nf1=ns1+length(x1)-1;nf2=ns2+length(x2)-1;n1=ns1:nf1;n2=ns2:nf2;[ya,n]=seqadd(x1,n1,x2,n2);[ym,n]=seqmult(x1,n1,x2,n2);subplot(221);stem(n1,x1,'*','r');ylabel('x1(n)');grid;subplot(223);stem(n2,x2,'*','r');xlabel('n');ylabel('x2(n)');grid;subplot(222);stem(n,ya,'*','r');ylabel('y1(n)+y2(n)');3grid;subplot(224);stem(n,ym,'*','r');xlabel('n');ylabel('y1(n)*y2(n)');grid;图142、序列的移位解:function[y,ny]=seqshift(x,nx,m)ny=nx+m;y=x;代码:clc;clearallx=[1,2,3,4,5];nx=-2:2;m=2;%向右移2个单位[y,ny]=seqshift(x,nx,m);subplot(211);stem(nx,x,'*','r');title('原序列x(n)');xlabel('n');ylabel('x(n)');subplot(212);stem(ny,y,'*','r');title('移位后序列y(n)');xlabel('n');ylabel('y(n)');grid;如下图2所示:图253、序列的卷积解:function[y,ny]=convwthn(x,nx,h,nh)ny1=nx(1)+nh(1);ny2=nx(end)+nh(end);y=conv(x,h);ny=(ny1:ny2);代码:clc;clearall;x=[1,2,3,-1,-2];nx=-1:3;h=[2,2,1,-1,4,-2];nh=-3:2;[y,ny]=convwthn(x,nx,h,nh);stem(ny,y,'*','r');xlabel('n');ylabel('y(n)');grid;x(n)与h(n)相卷积得到的图形如图3所示:图364、序列的相关解:function[y,ny]=convwthn(x,nx,h,nh)ny1=nx(1)+nh(1);ny2=nx(end)+nh(end);y=conv(x,h);ny=(ny1:ny2);代码:clc;clearallx=[2,1,3,2,1,5,1];nx=1:7;y=[2,1,3,4];ny=1:4;N1=length(x)-1;N2=length(y)-1;rxy=convwthn(fliplr(y),-ny,x,nx);k=-(N2):N1;stem(k,rxy,'*','r');xlabel('n');ylabel('rxy(n)');title('x(n)与y(n)之间的互相关');axis([-N2,N1,0,35]);grid;图478三、实验小结通过这次实验使我知道序列的卷积可以通过matlab实现。Matlab里本身有丰富的库函数,画图,求卷积各种运算只要调用相应的库函数即可。本次实验的难点就在conv()函数和各序列长度的计算,如果不注意其中的计算关系很容易出错。而conv()函数只要写错,后面的图形就不能准确的绘制出来。
本文标题:matlab序列的运算
链接地址:https://www.777doc.com/doc-2887466 .html