6数字信号处理上机实习报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

专题一离散卷积的计算一、实验内容设线性时不变(LTI)系统的冲激响应为h(n),输入序列为x(n)1、h(n)=(0.8)n,0≤n≤4;x(n)=u(n)-u(n-4)2、h(n)=(0.8)nu(n),x(n)=u(n)-u(n-4)3、h(n)=(0.8)nu(n),x(n)=u(n)求以上三种情况下系统的输出y(n)。二、实验目的1、掌握离散卷积计算机实现。2、进一步对离散信号卷积算法的理解。三、原理及算法概要算法:把冲激响应h(n)与输入序列x(n)分别输入到程序中,然后调用离散卷积函数y=conv(x.,h)即可得到所要求的结果。原理:离散卷积定义为kknhkxny)()()(当序列为有限长时,则nkknhkxny0)()()(四.理论计算1、h(n)=(0.8)n,0≤n≤4;x(n)=u(n)-u(n-4)mmnhmxnhnxny)()()()()((a)当n0时,y(n)=0(b)当30n时,nmny0)((0.8)n(c)当74n时,43)(nmny(0.8)n(d)当n7时,y(n)=0理论结果与上图实验结果图中所示吻合。2、h(n)=(0.8)nu(n),x(n)=u(n)-u(n-4)mmnhmxnhnxny)()()()()((a)当n0时,y(n)=0(b)当30n时,nmny0)((0.8)n(c)当204n时,n3)(nmny(0.8)n(d)当2321n时,203)(nmny(0.8)n(e)当n23时,y(n)=0在卷积序列中,因为n趋于无穷,在实验中无法实现,而0.8的20次幂基本接近于0,所以这里只取到n为20就可以了。由以上可以看出,理论结果与上图实验结果图中所示吻合。3、h(n)=(0.8)nu(n),x(n)=u(n)mmnhmxnhnxny)()()()()((a)当n0时,y(n)=0(b)当700n时,nmny0)((0.8)n(c)当14071n时,7070)(nmny(0.8)n(d)当n140时,y(n)=0在卷积序列中,因为n趋于无穷,在实验中无法实现,而0.8的70次幂的叠加基本接近于最大值,所以这里只取到n为70就可以了。由以上可以看出,理论结果与上图实验结果图中所示吻合。五.程序x1=[1111];nx1=0:3;h1=[10.80.640.8^30.8^4];nh1=0:4;y1=conv(x1,h1);subplot(3,3,1);stem(nx1,x1);title('序列x1');xlabel('n');ylabel('x1(n)');subplot(3,3,2);stem(nh1,h1);title('序列h1');xlabel('n');ylabel('h1(n)');subplot(3,3,3);stem(y1);title('序列y1');xlabel('n');ylabel('y1(n)');x2=[1111];nx2=0:3;nh2=0:1:20;h2=(0.8).^nh2;y2=conv(x2,h2);subplot(3,3,4);stem(x2);title('序列x2');xlabel('n');ylabel('x2(n)');subplot(3,3,5);stem(h2);title('序列h2');xlabel('n');ylabel('h2(n)');subplot(3,3,6);stem(y2);title('序列y2');xlabel('n');ylabel('y2(n)')nx3=0:1:20;x3=1.^nx3;nh3=0:1:20;h3=(0.8).^nh3;y3=conv(x3,h3);subplot(3,3,7);stem(nx3,x3);title('序列x3');xlabel('n');ylabel('x3(n)');subplot(3,3,8);stem(nh3,h3);title('序列h3');xlabel('n');ylabel('h3(n)');subplot(3,3,9);stem(y3);title('序列y3');xlabel('n');ylabel('y3(n)'六.程序运行结果七.结果分析有限长序列的离散卷积计算结果与理论值一致,而存在无限长序列做卷积时,由于在程序处理时是用比较长有限长序列代替的,所以与理论值基本相同。八.专题实习心得该专题主要进行的是有matlab实现离散卷积的计算,分为三个类型:冲激响应h(n)与输入序列x(n)都为有限长,一个序列为有限长一个序列为无限长和两个序列均为无限长。这部分实习内容不难,是原来做过的,主要是为了拾拣起原来所学的知识。第一种类型是最简单,也是最基本的,直接调用函数y=conv(x.,h)即可。在第二种和第三种类型的计算中遇到了一些困难,在输入序列时,由于存在无限长的序列,不知道该怎么输入,查过了相关的题目才弄明白。通过本专题的实习,让我对数字信号处理中的一些基础知识有了一些回顾,对原来所学过的知识也熟悉了一些。专题二离散傅里叶变换及其应用一、实验内容设有离散序列x(n)=cos(0.48πn)+cos(0.52πn)分析下列三种情况下的幅频特性。(1)采集数据长度N=16,分析16点的频谱,并画出幅频特性。(2)采集数据长度N=16,并补零到64点,分析其频谱,并画出幅频特性。(3)采集数据长度N=64,分析46点的频谱,并画出幅频特性。观察三幅不同的幅频特性图,分析和比较它们的特点及形成原因。2、实现序列的内插和抽取所对应的离散傅里叶变换。(选做)nRnnnx128]365.1cos36[cos求nxnx41和42nxnx对应的128点傅里叶变换,比较三个结果所得到的幅频特性,分析其差别产生的原因。二、实验目的1、了解DFT及FFT的性质和特点2、利用FFT算法计算信号的频谱。三、关键算法算法1:读入离散序列x(n)=cos(0.48πn)+cos(0.52πn),采集长度为N=16的数据,调用matlab中的函数fft(x,16)与fft(x,64)对其作离散傅里叶变换得到16点、64点的频谱。采集数据长度为N=64,,调用matlab中的函数fft(x,46)对其作离散傅里叶变换得到46点的频谱。算法2:读入离散序列信号nRnnnx128]365.1cos36[cos,每隔N=4采集一个数值,得到新的抽取离散序列nxnx41,每隔K=0.25采集一个数值得到新的内插离散序列42nxnx。分别对其做离散傅氏变换,得到对应的频谱图。原理概要:当抽样数N=2M时,以下为算法蝶形图。一般规律如下:1、当N=2M时,则要进行M次分解,即进行M级蝶形单元的计算2、按自然顺序输入,输出是码位倒置。3、每一级包含N/2个基本蝶形运算4、第L级有2LL--11个蝶群,蝶群间隔为N/2L-1如果是Matlab实现的话,可用以下两种方法计算信号频谱1、调用库函数为:fft(),直接计算X(k)2、进行矩阵运算1101101110110000Nxxx四.程序程序1:)6()2()4()0(XXXX1111)7()3()5()1(XXXX3210NNNN1111110NW0NW0NW0NW)0(x)2(x)4(x)6(x)1(x)3(x)5(x)7(xn=0:1:15;x1=cos(0.48*3.14*n)+cos(0.52*3.14*n);g1=abs(fft(x1,16));subplot(3,2,1);stem(x1);title('x1');subplot(3,2,2);stem(g1);title('g1');n2=0:1:15;x2=cos(0.48*3.14*n2)+cos(0.52*3.14*n2);x2=[x2zeros(1,48)];g2=abs(fft(x2,64));subplot(3,2,3);stem(x2);title('x2');subplot(3,2,4);stem(g2);title('g2');n3=0:1:64;x3=cos(0.48*3.14*n3)+cos(0.52*3.14*n3);g3=abs(fft(x3,46));subplot(3,2,5);stem(x3);title('x3');subplot(3,2,6);stem(g3);title('g3');程序2:x=[];forn=0:127x=[x(cos(1/36*pi*n)+cos(1.5/36*pi*n))]endX=abs(fft(x));subplot(3,2,1);stem(x);title('序列x');xlabel('n');ylabel('x(n)');subplot(3,2,2);stem(X);title('序列X');xlabel('\omega');ylabel('X');x1=[];forn=0:4:508x1=[x1(cos(1/36*pi*n)+cos(1.5/36*pi*n))]endX1=abs(fft(x1));subplot(3,2,3);stem(x1);title('序列x1');xlabel('n');ylabel('x1(n)');subplot(3,2,4);stem(X1);title('序列X1');xlabel('\omega');ylabel('X1');x2=[];forn=0:0.25:31.75x2=[x2(cos(1/36*pi*n)+cos(1.5/36*pi*n))]endX2=abs(fft(x2));subplot(3,2,5);stem(x2);title('序列x2');xlabel('n');ylabel('x2(n)');subplot(3,2,6);stem(X2);title('序列X2');xlabel('\omega');ylabel('X2');五.程序运行结果结果1:结果2:六.结果分析N点DFT的频谱分辨率是2π/N。一节指出可以通过补零观察到更多的频点,但是这并不意味着补零能够提高真正的频谱分辨率。这是因为x[n]实际上是x(t)采样的主值序列,而将x[n]补零得到的x'[n]周期延拓之后与原来的序列并不相同,也不是x(t)的采样。因此是不同离散信号的频谱。对于补零至M点的x'的DFT,只能说它的分辨率2π/M仅具有计算上的意义,并不是真正的、物理意义上的频谱。频谱分辨率的提高只能通过提高采样频率实现。七.专题实习心得离散傅里叶变换是一种快速算法,由于有限长序列在其频域也可离散化为有限长序列,因此离散傅里叶变换在数字信号处理中是非常有用的。DFT是重要的变换,在分析有限长序列的有用工具、信号处理的理论上有重要意义、运算方法上起核心作用,谱分析、卷积、相关都可以通DFT在计算机上实现。DFT解决了两个问题:一是离散与量化,二是快速运算。通过编程实践体会到了时域、频域信号的对应关系,也对采样频率的含义有了深刻的认识,同时也加深了对采样信号频谱周期性的理解。八.思考题1、直接计算DFT与用FFT计算,理论上的速度差别应是多少?整个DFT运算总共需要4N2次实数乘法和2N(2N-1)次实数加法。整个FFT运算总共需要(N2/2)+(N/2)=N(N+1)/2≈N2/2次复数乘法和N(N/2-1)+N=N2/2次复数加法。由此可见,理论上用FFT计算运算速度是DFT的二倍。2、什么是高密度频谱及高分辨率频谱?实验1

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功