《用MATLAB实现序列的圆周卷积.doc》由会员分享,可在线阅读,更多相关《用MATLAB实现序列的圆周卷积.doc(3页珍藏版)》请在三一文库上搜索。
1、数 字 信 号 处 理 实 验 报 告实验项目名称: 用MATLAB实现序列的圆周卷积 实验日期: 2012-11-28 实验成绩: 实验评定标准:1)实验结果是否正确A( )B( )C( )2)实验结果分析A( )B( )C( )3)实验报告是否按照规定格式A( )B( )C( )一、 实验目的 通过本实验,掌握一些基本而且重要的离散时间信号,熟悉基本离散时 间信号的MATLAB实现方法。二、 实验器材 PC机,MATLAB软件。三、 实验内容 计算两序列x1(n)=1,2,3,4,5,x2(n)=1,2,3,4,5,4,3,2,1的圆周卷积。四、 实验结果 实验代码:clear allcl
2、ose allclcx1=1,2,3,4,5,6,7,8;x2=1,2,3,4,5,6,7,8,7,6,5,4,3,2,1;N=length(x1)+length(x2);n=0:N-1n1=0:N-2;n2=0:N-3;y1=circonvt(x1,x2,N);y2=circonvt(x1,x2,N-1);y3=circonvt(x1,x2,N-2);x1=x1 zeros(1,N-length(x1);x2=x2 zeros(1,N-length(x2);Xf1=dft(x1,N);Xf2=dft(x2,N);Xf=Xf1.*Xf2;x=idft(Xf,N);x=real(x);subpl
3、ot(2,3,1)stem(n,x1);title(x1(n);subplot(2,3,2)stem(n,x2);title(x2(n)subplot(2,3,3);stem(n,x);title(x(n)=IDFT(X(k);subplot(2,3,4);stem(n,y1);title(N点圆周卷积);subplot(2,3,5);stem(n1,y2);title(N-1点圆周卷积);subplot(2,3,6);stem(n2,y3);title(N-2点圆周卷积);function y=circonvt(x1,x2,N)if length(x1)N error(N 必须 = x1的长
4、度)endif length(x2)N error(N 必须 = x2的长度)endx1=x1 zeros(1,N-length(x1);x2=x2 zeros(1,N-length(x2);m=0:1:N-1;x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:1:N H(n,:)=cirshift(x2,n-1,N);endy=x1*H;function y=cirshift(x,m,N)if length(x)N error(N 必须 = x的长度)endx=x zeros(1,N-length(x);n=0:1:N-1;n=mod(n-m,N);y=x(n+1);function Xk=dft(xn,N)n=0:1:N-1;k=0:1:N-1;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.nk;Xk= xn * WNnk;function xn=idft(Xk,N)%计算逆离散傅里叶变换%xn=idft(Xk,N)n=0:1:N-1;k=0:1:N-1;WN=exp(-j*2*pi/N);nk=n*k;WNnk=WN.(-nk);xn=(Xk*WNnk)/N; 实验结果:五、 实验结果分析