《实验报告1-线性卷积与圆周卷积.docx》由会员分享,可在线阅读,更多相关《实验报告1-线性卷积与圆周卷积.docx(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、大连理工大学实验报告学院(系):信息与通信工程 专业:通信工程 班级: 电通1101姓 名: 殷青 学号:201181227 .实验时间: 201457 实验室: 创C221实验一线性卷积与周卷积一、实验目的和要求(见预习报告)二、主要仪器设备MATLAB三、实验步骤与操作方法(见预习报告)四、实验结果与分析1 .给出序列x=3, 11, 7,0, -1,4, 2, h=2, 3, 0, -5, 2,11;用两种方法求两者的线性卷积y,对 比结果。a)直接调用mat lab内部函数conv来计算。b)根据线性卷积的步骤计算。Mat lab 实现:a):x=3 11 7 0-1 4 2;y=2
2、3 0-5 2 1;h=conv(x,y);figure;subplot( 1,4,1 );stem(x);subplot( 1,4,2);stem(y);subplot( 1,4,3);stem(h);运行结果:b):0510051060-60 0aGT,干%山-一C140200-20-401020x=3 11 7 0-1 4 2;y=2 3 0-5 2 1;h=conv(x,y);figure;subplot( 1,4,1 );stem(x);subplot( 1,4,2);stem(y);subplot(l ,4,3);stem(h);nx=length(x);ny=length(y);
3、n=zeros(nx+ny-1);for i=l:nx+ny-lif i=nyfor j=l:in(ij)=x(i-j+l)*y(j);endelsefor k=i-6:nyn(i,k)=x(i-k+1 )*y(k);endendenddisp(n)h2=zeros( 1 ,nx+ny-l);for i=l:nx+ny-lh2(i)=sum(n(i,:);enddisp(h2);subplot( 1,4,4);stem(h2);运行结果:n矩阵:6000000000002290000000000143300000000000210-1500000000-200-55600000008-30-3
4、5223000000412001411000000060507000000000-20-20000000000-108-1000000000044000000000002000000h2矩阵:63147-514118-22-3.将函数conv稍加扩展为函数convjn,它可以对任意基底的序列求卷积。格式如下: function y, ny=conv_ni(x, nx, h, nh)%信号处理的改进卷积程序% y, ny =conv_m (x, nx, h, nh)% y, ny二卷积结果% x, nx二第一个信号% h,nh二第二个信号Mat lab 实现:functiony9nyj=conv
5、_m(x,nx,h,nh) n=zeros(nx+nh-1);for i=l:nx+nh-lif i=x2的长度1) endl=length(x l)+length(x2)-l;f=conv(xl,x2);x 1=x 1 ,zeros( 1 ,N-length(x 1);x2=x2,zeros(l,N-length(x2);i=O:length(xl)-l;subplot(2,2,l);stem(i,xl,.);grid on;xlabel(n);ylabel(xl(n);title,补0后xl序歹);subplot(2,2,2);i=0:length(x2)-l;stem(i,x2,7);g
6、rid on;xlabel(n);ylabel(x2(n);titleC补0后x2序列)m=0:l:N-l;x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=l:l:NH(n,:)=cirshftt(x2,n-1 ,N);endy=xl*H;subplot(2,2,3);i=0:N-l;stem(i,y,7);grid on;xlabel(h);ylabelCy(n);titleC圆周卷积结果);subplot(2,2,4);stem(i,f/.);grid on; xlabel(H);ylabeI(f(n);五、讨论、建议、质疑在探讨如何实现圆周卷积与线性卷积的过程
7、中,学习了很多有关matlab的新知识,下 面是我实验中用到的参考资料:1)fix(n)的意义是取小于n的整数(是向零点舍入的意思是往零的方向上靠),例如, fix(pi)=3;fix(3.5)=3;fix(-3.5)=-3round(n)是纯粹的四舍五入,round(pi)=3;round(3.5)=4;round(-3.5)=-4;round(-3.1)=-3;2) ceil(n)的意思是向正方向舍入,floor(n)向负方向舍入。例如:ceil(pi)=4; ceil(3.5)=4;ceil(-3.2)=-3;向正方向舍入;floor(pi)=3; floor(3.5)=3; floor
8、(-3.2)=-4;向负方向舍入同时也找到了另外一种实现方法,如下: %另一种方法% n=0:50;N=56;A=zeros(l,l 1);X=heaviside(n+l)-heaviside(n-l 1);for i=l:llA(i)=X(i);endh=zeros(l,51);for i=l :51h(i)=0.9A(i-l);endy=circonvt(A,h,N);figure;stem(O:N-1 ),y,/);%circonvt.m%在时域中实现圆周卷积,function y=circonvt(xl,x2,N)%在xl和x2 :(时域)之间的N点圆 周卷积%y=circonvt(x
9、l,x2,N)%y=包含圆周卷积的输出序列%xl=长度N1=N的输入序列%x2=长度N2Nerror( N必须=xl的长度,)end%检查x2的长度:if length(x2)Ntitle(线性卷积序列);%cirshftt.mfunction y=cirshftt(x,m,N)%长度为N的x序列:(时域)作m 个样本的循环移位%y=cirshftt(x,m,N)%y=包含循环移位的输出序列%x=长度=N的输入序列%m=移位样本数%N=循环缓冲器长度% 方法:y(n)=x(n-m) mod N)%检查x的长度实验结果:if length(x)Nerror( fN必须=x的长度1) endx=x
10、 zeros( 1 ,N-length(x);n=0:l:N-l;n=mod(n-m,N);y=x(n+l);%mod.mfunction m=mod(n,N)%计算m=(n mod N)下标m=rem(n,N);m=m+N;m=rem(m,N);补。后x2序列补。后x1序列六、实验体会通过这个实验,加深了我对线性卷积和圆周卷积公式,二者的变换关系的记忆,理解, 在用matlab实现的过程中,学习了很多新的函数的用法,如floor函数。在用fft实现圆周 卷积时,N点的圆周卷积结果与之前用函数实现的不同,到N=40后就为。了,后来仔细检 查后发现,因为采用的是重叠保存法,每次要删除前面(m-l)个点,因此做的是N-K个点 的圆周卷积,所以在40往后就是。了,更正之后就正确实现了 FFT圆周卷积变换。