《序列卷积和快速卷积的编程实现.pdf》由会员分享,可在线阅读,更多相关《序列卷积和快速卷积的编程实现.pdf(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 Matlab 软件介绍 .02 原理简介.12.1 离散傅里叶变换(DFT)和快速傅里叶变换(FFT) .22.2 序列的卷积和快速卷积运算.22.3 快速傅里叶变换和快速卷积.23 Matlab 程序设计 .23.1 程序设计.33.2 程序仿真.33.2.1:.33.2.2:.43.2.3:.53.3 运行结果及分析.74 心得体会.75 参考文献.8课程设计任务书学生姓名:刘禹煜专业班级:电信1104指导教师:阙大顺工作单位:信息工程学院课程设计名称课程设计名称:信号分析与处理课程设计课程设计题目课程设计题目:序列的卷积和快速卷积运算的编程实现初始条件初始条件:1.Matlab6.5
2、 以上版本软件;2.课程设计辅导资料: “Matlab 语言基础及使用入门” 、 “信号与系统” 、 “数字信号处理原理与实现” 、“Matlab 及在电子信息课程中的应用”等;3.先修课程:信号与系统、数字信号处理、Matlab 应用实践及信号处理类课程等。要求完成的主要任务:要求完成的主要任务: (包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1.课程设计时间:1 周;2.课程设计内容:序列的卷积和快速卷积运算的编程实现,具体包括:直接卷积及应用、快速卷积方法及实现、两者的比较分析等;3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部
3、分的原理分析、 建模、 必要的推导和可行性分析, 画出程序设计框图, 编写程序代码 (含注释) ,上机调试运行程序,记录实验结果(含计算结果和图表) ,并对实验结果进行分析和总结,按要求进行实验演示和答辩等;4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括: 目录; 与设计题目相关的理论分析、归纳和总结; 与设计内容相关的原理分析、建模、推导、可行性分析; 程序设计框图、程序代码(含注释) 、程序运行结果和图表、实验结果分析和总结; 课程设计的心得体会(至少500 字) ; 参考文献; 其它必要内容等。时间安排:时间安排:2 周(分散进行)1 Matlab软件介绍
4、Matlab (Matrix Laboratory,矩阵实验室)软件最初是作为“矩阵理论”和“数据分析”等课程的计算工具,经过十几年的发展和完善,目前已成为世界各国在科学分析和计算领域的主流软件,并被IEEE评述为国际公认的最优秀的科技应用软件。它的主要特点是:(1) Matlab可以用来解线性方程组、进行矩阵变换与运算、数据插值运算等,能使用户从繁杂的数学运算分析中解脱出来。(2) Matlab中有许多高级的绘图函数,包括二维、三维、专用图形函数、图形句柄、用户图形界面工具等,利用这些函数可以轻松地完成各种图形的绘制和编辑工作,实现计算结果和编程的可视化。(3) 友好的用户界面及接近数学表达
5、式的自然化语言,使学习者易于学习和掌握。(4) 功能丰富的应用工具箱 (如信号处理工具箱,通信工具箱,控制系统工具箱等 )为用户提供了大量方便实用的处理工具。Matlab 的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。目前,国内很多理工院校已经或者正在把该软件作为学生必须掌握的一种软件。MATLAB 产品族可以用来进行以下各种工作: (1) 数值分析(2) 数值和符号计算(3) 工程与科学绘图(4) 控制系统的设计与仿真(5) 数字图像处理技术(6) 数字信号处理技术(7) 通讯系统设计与仿真(8) 财务与金融工程
6、MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了 MATLAB 环境,以解决这些应用领域内特定类型的问题。它的主要特点是:(1) Matlab 可以用来解线性方程组、进行矩阵变换与运算、数据插值运算等,能使用户从繁杂的数学运算分析中解脱出来。(2) Matlab 中有许多高级的绘图函数,包括二维、三维、专用图形函数、图形句柄、用户图形界面工具等,利用这些函数可以轻松地完成各种图形的绘制和编辑工作,实现计算结果和编程的可视化。(3) 友好的用户界面及接近数学表达
7、式的自然化语言,使学习者易于学习和掌握。 (4) 功能丰富的应用工具箱(如信号处理工具箱,通信工具箱,控制系统工具箱等 )为用户提供了大量方便实用的处理工具。Matlab 的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。目前,国内很多理工院校已经或者正在把该软件作为学生必须掌握的一种软件。2 原理简介2.1 离散傅里叶变换(DFT)和快速傅里叶变换(FFT)离散傅里叶变换,是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)的序列是有限长
8、的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。即使对有限长的离散信号作DFT, 也应当将其看作经过周期延拓成为周期信号在做变换。 在实际应用中通常采用快速傅里叶变换(FFT)高效计算DFT。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。2.2 序列的卷积和快速卷积运算卷积是数字信号处理中最常见的, 也是最重要的运算之一。 利用卷积可以实现相关计算和FIR滤波等等,正因为卷积如此重要,所以半个世纪以来,学者们提出了多种不同卷积实现结构,这些结构各有优点,针对不同应用可以灵活选择,而其中快速卷积无疑是重
9、要的卷积方法之一。顾名思义,快速卷积重点在一个“快”,如果对卷积速度要求较高,快速卷积无疑是理想的工具。当然,为了提高速度,就要牺牲面积和功耗。在此,我们是利用快速傅里叶变换实现快速卷积运算。2.3 快速傅里叶变换和快速卷积在此,我们是利用快速傅里叶变换实现快速卷积运算。同时在进行 Matlab编程时也是利用快速傅里叶变换来得到快速卷积的结果。(具体方法将在分析中详细介绍)3 Matlab程序设计3.1 程序设计题目 1:已知线性非移变系统的 h(n)=6,2,3,4,2,输入为 x(n)=1,2,3,4,5;(1) 用人工计算系统输出 y(n);(2) 编写程序输出 y(n),并作图。题目
10、2:用函数 conv 和 FFT 计算长为 1000 序列的卷积,比较其计算时间。题目 3:用快速卷积法计算x(n) 0.9nRM(n)和h(n) RN(n)两个序列的卷积;并测试直接卷积和快速卷积的时间。3.2程序仿真3.2.1:已知线性非移变系统的 h(n)=6,2,3,4,2,输入为 x(n)=1,2,3,4,5;(3) 用人工计算系统输出 y(n);(4) 编写程序输出 y(n),并作图。程序:h=6,2,3,6,4,2;x=1,2,3,4,5;y=conv(h,x);stem(y)图 13.2.2:用函数 conv 和 FFT 计算长为 1000 序列的卷积,比较其计算时间。程序:L
11、=1000;N=L*2-1;n=1:L;x1=2*n;x2=3.n;t0=clock;yc=conv(x1,x2);conv_time=etime(clock,t0)t0=clock;yf=ifft(fft(x1,N).*fft(x2,N);fft_time=etime(clock,t0)结果:conv_time=0.0030fft_time=0.0050可知计算长为1000序列的卷积,直接卷积用时反而少些。3.2.3:用快速卷积法计算x(n) 0.9nRM(n)和h(n) RN(n)两个序列的卷积;并测试直接卷积和快速卷积的时间。因为并没有说明 M 和 N 的取值,所以我们用两组数据来对比说
12、明。情况 1:取 M=60,N=40 时,xn=0.9.(1:60);hn=1.(1:40);tic;yn=conv(xn,hn);toc;L=pow2(nextpow2(60+40-1);%取快速卷积的长度 L=M+N-1 并为 2 的整次幂ticxk=fft(xn,L);hk=fft(hn,L);yk=xk.*hk;yn=ifft(yk,L);toc;subplot(221),stem(xn,.);ylabel(x(n);subplot(222),stem(hn,.);ylabel(h(n);subplot(212),ny=1:L;stem(real(yn),.);ylabel(y(n);
13、Elapsed time is 0.004174 seconds.Elapsed time is 0.008883 seconds.图 2情况 2:取 M=3000,N=2000 时,xn=0.9.(1:3000);hn=1.(1:2000);tic;yn=conv(xn,hn);toc;L=pow2(nextpow2(3000+2000-1);%取快速卷积的长度 L=M+N-1 并为 2 的整次幂ticxk=fft(xn,L);hk=fft(hn,L);yk=xk.*hk;yn=ifft(yk,L);toc;subplot(221),stem(xn,.);ylabel(x(n);subplo
14、t(222),stem(hn,.);ylabel(h(n);subplot(212),ny=1:L;stem(real(yn),.);ylabel(y(n);Elapsed time is 0.006967 seconds.Elapsed time is 0.006764 seconds.图 33.3 运行结果及分析图1及图2序列长度较短,用直接卷积比用快速卷积更好,图3序列长度较长,快速卷积更效率。所以我们得出以下结论:当序列长度较少时,直接卷积比快速卷积所需时间短;当序列长度较长时,快速卷积更效率。4 心得体会本次课程设计我所做的题目是信号的谱分析及时域和频域采样对偶性分析的编程实现,这次
15、课设应该来说是比较轻松的一次,没有接触太多陌生的东西,作为电子信息工程的一名学生,老师从一开始就一直强调信号的分析和对于 MATLAB 的掌握,当然我觉得这至少从一个侧面反映出这个软件或者是这种方法的重要性,我们必须很认真的对待。事实上 MATLAB 也向我们展示了它的强大,虽然我们用的、掌握的只是很少一部分,这不免让我有很多感触:第一,信息类专业的学生,我们要接触很多仿真软件,比如Pspice、Protel、ISE我们每学期都要做课设,这是一个很好的进行能力拓展的平台,但是我们会觉得一些东西并没有达到其训练效果,为什么呢?我觉得很大一个方面就是我们的指导思想并不明确,我们在不断的追求数量。如
16、此反复,回头看看,我们发现什么都不会,什么都是在记忆中,却什么都想不起来,而许多东西是相通的,我觉得我们掌握最基本的就够了,最基本的就是最重要的,贪多没有任何好处。第二,MATLAB 作为一种科学计算软件,有着其独特优势,尤其在科学计算及精确绘图上,与其他计算机语言相比,简洁而且具有智能化,适应我们的思维方式与书写习惯,它使用解析方法工作,直观且简单明了。人机交互性能好,操作也很简单,在图形描绘上解决手工描绘的各种缺点。我想这也是我们专业为什么一再强调的原因。第三,完成这次课程设计我认为收获还是很多的,不但进一步掌握了数字信号处理的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及
17、动手能力,同时对于模拟滤波器来了个系统的总结。更多的是让我看清了自己,明白了凡事需要耐心,实践是检验学习的唯一标准。理论知识的不足在这次课设中表现的很明显。这将有助于我今后的学习,端正自己的学习态度,从而更加努力的学习。只有这样我们才能真正的去掌握它,而不是只懂得一点皮毛。同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。这一点,是非常宝贵的、重要的。对我而言,知识上的收获重要,精神上的丰收更加可喜。其次,整个设计、扩展过程也进一步提高了我对知识整合的能力,如果仅靠课本、教材所提供的知识范围是远远不够的,应学会充分利用网络资源、参考文献等知识获取渠道,从而巩固与扩展教材、课堂上给予我们的基础知识。5 参考文献1 刘泉等.数字信号处理原理与实现(第 2 版)M.北京:电子工业出版社,2009.2 丁玉美等.数字信号处理M.西安:西安电子科技大学出版社,2001.3 陈怀琛等.MATLAB 及在电子信息课程中的应用M.北京:电子工业出版社,2003.4 程佩青.数字信号处理教程M.北京:清华大学出版社,2008.5 李建新等.现代通信系统分析与仿真-MATLAB 通信工具箱M.西安:西安电子科技大学出版社,2000.
限制150内