序列卷积和快速卷积的编程实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1 Matlab软件介绍 (1)
2 原理简介 (3)
2.1 离散傅里叶变换(DFT)和快速傅里叶变换(FFT) (3)
2.2 序列的卷积和快速卷积运算 (3)
2.3 快速傅里叶变换和快速卷积 (3)
3 Matlab程序设计 (4)
3.1 程序设计 (4)
3.2程序仿真 (4)
3.2.1: (4)
3.2.2: (5)
3.2.3: (6)
3.3 运行结果及分析 (8)
4 心得体会 (9)
5 参考文献 (10)
课程设计任务书
学生姓名:刘禹煜专业班级:电信1104
指导教师:阙大顺工作单位:信息工程学院
课程设计名称:信号分析与处理课程设计
课程设计题目:序列的卷积和快速卷积运算的编程实现
初始条件:
1.Matlab6.5以上版本软件;
2.课程设计辅导资料:“Matlab语言基础及使用入门”、“信号与系统”、“数字信号处理原理与实现”、
“Matlab及在电子信息课程中的应用”等;
3.先修课程:信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.课程设计时间:1周;
2.课程设计内容:序列的卷积和快速卷积运算的编程实现,具体包括:直接卷积及应用、快速卷积方
法及实现、两者的比较分析等;
3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设
计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结,按要求进行实验演示和答辩等;
4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:
①目录;
②与设计题目相关的理论分析、归纳和总结;
③与设计内容相关的原理分析、建模、推导、可行性分析;
④程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;
⑤课程设计的心得体会(至少500字);
⑥参考文献;
⑦其它必要内容等。

时间安排:2周(分散进行)
1 Matlab软件介绍
Matlab (Matrix Laboratory,矩阵实验室)软件最初是作为“矩阵理论”和“数据分析”等课程的计算工具,经过十几年的发展和完善,目前已成为世界各国在科学分析和计算领域的主流软件,并被IEEE评述为国际公认的最优秀的科技应用软件。

它的主要特点是:
(1)Matlab可以用来解线性方程组、进行矩阵变换与运算、数据插值运算等,能使用户从繁杂的数学运算分析中解脱出来。

(2)Matlab中有许多高级的绘图函数,包括二维、三维、专用图形函数、图形句柄、用户图形界面工具等,利用这些函数可以轻松地完成各种图形的绘制和编辑工作,实现计算结果和编程的可视化。

(3)友好的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。

(4)功能丰富的应用工具箱(如信号处理工具箱,通信工具箱,控制系统工具箱等)为用户提供了大量方便实用的处理工具。

Matlab的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。

目前,国内很多理工院校已经或者正在把该软件作为学生必须掌握的一种软件。

MATLAB 产品族可以用来进行以下各种工作:
(1) 数值分析
(2) 数值和符号计算
(3) 工程与科学绘图
(4) 控制系统的设计与仿真
(5) 数字图像处理技术
(6) 数字信号处理技术
(7) 通讯系统设计与仿真
(8) 财务与金融工程
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。

附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。

它的主要特点是:
(1) Matlab可以用来解线性方程组、进行矩阵变换与运算、数据插值运算等,能使用户从繁杂的数学运算分析中解脱出来。

(2) Matlab中有许多高级的绘图函数,包括二维、三维、专用图形函数、图形句柄、用户图形界面工具等,利用这些函数可以轻松地完成各种图形的绘制和编辑工作,实现计算结果和编程的可视化。

(3)友好的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。

(4)功能丰富的应用工具箱(如信号处理工具箱,通信工具箱,控制系统工具箱等)为用户提供了大量方便实用的处理工具。

Matlab的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。

目前,国内很多理工院校已经或者正在把该软件作为学生必须掌握的一种软件。

2 原理简介
2.1 离散傅里叶变换(DFT)和快速傅里叶变换(FFT)
离散傅里叶变换,是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。

在形式上,变换两端(时域和频域上)的序列是有限长的,而实际上这两组序列都应当被认为是离散周期信号的主值序列。

即使对有限长的离散信号作DFT,也应当将其看作经过周期延拓成为周期信号在做变换。

在实际应用中通常采用快速傅里叶变换(FFT)高效计算DFT。

采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。

2.2 序列的卷积和快速卷积运算
卷积是数字信号处理中最常见的,也是最重要的运算之一。

利用卷积可以实现相关计算和FIR滤波等等,正因为卷积如此重要,所以半个世纪以来,学者们提出了多种不同卷积实现结构,这些结构各有优点,针对不同应用可以灵活选择,而其中快速卷积无疑是重要的卷积方法之一。

顾名思义,快速卷积重点在一个“快”,如果对卷积速度要求较高,快速卷积无疑是理想的工具。

当然,为了提高速度,就要牺牲面积和功耗。

在此,我们是利用快速傅里叶变换实现快速卷积运算。

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),并作图。

题目2:用函数conv 和FFT 计算长为1000序列的卷积,比较其计算时间。

题目3:用快速卷积法计算()0.9()n M x n R n =和()()N h n R 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)
图1
3.2.2:
用函数conv和FFT计算长为1000序列的卷积,比较其计算时间。

程序:
L=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.0030 fft_time=0.0050
可知计算长为1000序列的卷积,直接卷积用时反而少些。

3.2.3:
用快速卷积法计算()0.9()n M x n R n =和()()N h n R n =两个序列的卷积;并测试直接卷积和快速卷积的时间。

因为并没有说明M 和N 的取值,所以我们用两组数据来对比说明。

情况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的整次幂 tic
xk=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)'); 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的整次幂tic
xk=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)');
Elapsed time is 0.006967 seconds.
Elapsed time is 0.006764 seconds.
图3
3.3 运行结果及分析
图1及图2序列长度较短,用直接卷积比用快速卷积更好,图3序列长度较长,快速卷积更效率。

所以我们得出以下结论:当序列长度较少时,直接卷积比快速卷积所需时间短;当序列长度较长时,快速卷积更效率。

4 心得体会
本次课程设计我所做的题目是信号的谱分析及时域和频域采样对偶性分析的编程实现,这次课设应该来说是比较轻松的一次,没有接触太多陌生的东西,作为电子信息工程的一名学生,老师从一开始就一直强调信号的分析和对于MATLAB的掌握,当然我觉得这至少从一个侧面反映出这个软件或者是这种方法的重要性,我们必须很认真的对待。

事实上MATLAB也向我们展示了它的强大,虽然我们用的、掌握的只是很少一部分,这不免让我有很多感触:
第一,信息类专业的学生,我们要接触很多仿真软件,比如Pspice、Protel、ISE……我们每学期都要做课设,这是一个很好的进行能力拓展的平台,但是我们会觉得一些东西并没有达到其训练效果,为什么呢?我觉得很大一个方面就是我们的指导思想并不明确,我们在不断的追求数量。

如此反复,回头看看,我们发现什么都不会,什么都是在记忆中,却什么都想不起来,而许多东西是相通的,我觉得我们掌握最基本的就够了,最基本的就是最重要的,贪多没有任何好处。

第二,MATLAB作为一种科学计算软件,有着其独特优势,尤其在科学计算及精确绘图上,与其他计算机语言相比,简洁而且具有智能化,适应我们的思维方式与书写习惯,它使用解析方法工作,直观且简单明了。

人机交互性能好,操作也很简单,在图形描绘上解决手工描绘的各种缺点。

我想这也是我们专业为什么一再强调的原因。

第三,完成这次课程设计我认为收获还是很多的,不但进一步掌握了数字信号处理
的基础知识及一门专业仿真软件的基本操作,还提高了自己的设计能力及动手能力,同
时对于模拟滤波器来了个系统的总结。

更多的是让我看清了自己,明白了凡事需要耐心,实践是检验学习的唯一标准。

理论知识的不足在这次课设中表现的很明显。

这将有助于
我今后的学习,端正自己的学习态度,从而更加努力的学习。

只有这样我们才能真正的
去掌握它,而不是只懂得一点皮毛。

同时我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。

这一点,是非常宝贵的、重要的。

对我而言,知识上的收获重要,精神上的丰收更加可喜。

其次,整个设计、扩展过程也进一步提高了我对知识整合的能力,如果仅靠课本、教材所提供的知识范围是远远不够的,应学会充分利用网络资源、参考文献等知识获取渠道,从而巩固与扩展教材、课堂上给予我们的基础知识。

5 参考文献
[1] 刘泉等.数字信号处理原理与实现(第2版)[M].北京:电子工业出版社,2009.
[2] 丁玉美等.数字信号处理[M].西安:西安电子科技大学出版社,2001.
[3] 陈怀琛等.MATLAB及在电子信息课程中的应用[M].北京:电子工业出版社,2003.
[4] 程佩青.数字信号处理教程[M].北京:清华大学出版社,2008.
[5] 李建新等.现代通信系统分析与仿真-MATLAB通信工具箱[M].西安:西安电子科技大学出版社,2000.。

相关文档
最新文档