资源描述:
《杭电实验:线性卷积与圆周卷积的计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、题目:已知两个有限长序列x(n)=δ(n)+2δ(n-1)+3δ(n-2)+4δ(n-3)+5δ(n-4)h(n)=δ(n)+2δ(n-1)+δ(n-2)+2δ(n-3)计算以下两个序列的线性卷积和圆周卷积(1)x(n)⑤y(n)(2)x(n)⑥y(n)(3)x(n)⑨y(n)(4)x(n)⑩y(n)学弟学妹们啊!不要盲目的复制进去啊~~~这里应该先创建一个文档保存函数circonv再创建一个文档保存调用函数cirshiftd然后再把主程序拉进去才能调用以上2个函数喔~~~还是好好学习吧!●调用函数circon
2、vfunctionyc=circonv(x1,x2,N)%用直接法实现圆周卷积%y=circonv(x1,x2,N)%y:输出序列%x1,x2:输入序列%N:圆周卷积的长度iflength(x1)>Nerror;endiflength(x2)>Nerror;end%以上语句判断两个序列的长度是否小于Nx1=[x1,zeros(1,N-length(x1))];%填充序列x1(n)使其长度为N,序列h(n)的长度为N1,序列x(n)的长度为N2x2=[x2,zeros(1,N-length(x2))];%填充序列
3、x2(n)使其长度为Nn=[0:1:N-1];x2=x2(mod(-n,N)+1);%生成序列x2((-n))N,镜像,可实现对x(n)以N为周期的周期延拓,加1是因为MATLAB向量下标只能从1开始。H=zeros(N,N);%生成N行N列的零矩阵forn=1:1:NH(n,:)=cirshifted(x2,n-1,N);%该矩阵的k行为x2((k-1-n))Nendyc=x1*H';%计算圆周卷积●调用函数cirshiftdfunctiony=cirshiftd(x,m,N)%直接实现序列x的圆周移位%y=
4、cirshiftd(x,m,N)%x:输入序列,且它的长度小于N%m:移位位数%N:圆周卷积的长度%y:输出的移位序列iflength(x)>Nerror('x的长度必须小于N');endx=[x,zeros(1,N-length(x))];n=[0:1:N-1];y=x(mod(n-m,N)+1);•函数(1)x(n)⑤y(n)clearall;N1=5;N2=4;xn=[12345];%生成x(n)hn=[1212];%生成h(n)yln=conv(xn,hn);%直接用函数conv计算线性卷积ycn=ci
5、rconv(xn,hn,5);%用函数circonv计算N1点圆周卷积ny1=[0:1:length(yln)-1];ny2=[0:1:length(ycn)-1];subplot(2,1,1);%画图stem(ny1,yln);ylabel('线性卷积');subplot(2,1,2);stem(ny2,ycn);ylabel('圆周卷积');•函数(2)x(n)⑥y(n)clearall;N1=5;N2=4;xn=[12345];%生成x(n)hn=[1212];%生成h(n)yln=conv(xn,hn)
6、;%直接用函数conv计算线性卷积ycn=circonv(xn,hn,6);%用函数circonv计算N1点圆周卷积ny1=[0:1:length(yln)-1];ny2=[0:1:length(ycn)-1];subplot(2,1,1);stem(ny1,yln);ylabel('线性卷积');subplot(2,1,2);stem(ny2,ycn);ylabel('圆周卷积');•函数(3)x(n)⑨y(n)clearall;N1=5;N2=4;xn=[12345];%生成x(n)hn=[1212];%生
7、成h(n)yln=conv(xn,hn);%直接用函数conv计算线性卷积ycn=circonv(xn,hn,9);%用函数circonv计算N1点圆周卷积ny1=[0:1:length(yln)-1];ny2=[0:1:length(ycn)-1];subplot(2,1,1);stem(ny1,yln);ylabel('线性卷积');subplot(2,1,2);stem(ny2,ycn);ylabel('圆周卷积');•函数(4)x(n)⑩y(n)clearall;N1=5;N2=4;xn=[12345]
8、;%生成x(n)hn=[1212];%生成h(n)yln=conv(xn,hn);%直接用函数conv计算线性卷积ycn=circonv(xn,hn,10);%用函数circonv计算N1点圆周卷积ny1=[0:1:length(yln)-1];ny2=[0:1:length(ycn)-1];subplot(2,1,1);stem(ny1,yln);ylabel('线性卷积');sub