电信类课程试验报告学 院:基础信息工程系 别:电子信息工程课程名称: 数字信号处理姓 名:学 号:日期:实验三实验名称:线性卷积与圆周卷积的计算一、实验目的( 1)通过编程,上机调试程序,进一不增强使用计算机解决问题的能力。( 2)掌握线性卷积与圆周卷积软件实现的方法,并实验两者之间的关系。二、主要函数简介对于无限长序列不能用MATLAB 直接计算线性卷积,在MATLAB 内部只能提供了一个conv 函数计算两个有限长序列的线性卷积。对于圆周卷积MATLAB内部没有提供现成的函数,我们可以按照定义式直接编程计算。计算两个有限长序列的线性卷积函数:y(n)=conv(x,h)输入参数: x,h 为已知两个有限长序列矢量。输出参数: y 为线性卷积所的序列矢量。三、实验内容及要求已知两个有限长序列: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)⑤h(n) ② x(n)⑥h(n) ③ x(n)⑨h(n) ④ x(n)⑽ h(n)(2)编制一个计算两个序列线性卷积的通用程序,计算x(n)*h(n).(3)编制一个计算圆周卷积的通用程序,计算上述4 种情况下两个序列x(n)与 h(n)的圆周卷积。(4)上机调试并打印或记录实验结果。注:可在一个程序中用菜单形式实现上述两种卷积的计算。(5)将实验结果与预先笔算的结果比较,验证其真确性。首先定义圆周卷积的函数,保存为.m文件。function yc=circonv(x1,x2,N)if length(x1)>Nerror('N 必须大于等于x1 的长度 ');endif length(x2)>Nerror('N 必须大于等于x2 的长度 ');endx1=[x1,zeros(1,N-length(x1))];x2=[x2,zeros(1,N-length(x2))];n=[0:N-1];x2=x2(mod(-n,N)+1);H=zeros(N,N);for n=1:1:NH(n,:)=cirshiftd(x2,n-1,N);endyc=x1*H';再次定义圆周移位的函数,保存为.m文件。function y=cirshiftd(x,m,N)if length(x)>Nerror('x 的长度必须小于N');endx=[x,zeros(1,N-length(x))];n=[0:1:N-1];y=x(mod(n-m,N)+1);在此基础上运行 MATLAB函数:(1)① x(n)⑤ y(n)clear all;N1=5;N2=4;xn=[1 2 3 4 5];hn=[1 2 1 2];yln=conv(xn,hn); ycn=circonv(xn,hn,5); 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('圆周卷积 ');② x(n)⑥ y(n)clear all;N1=5...