序列的卷积和快速卷积运算的编程实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 Matlab软件介绍 (1)
2 项目设计目的及技术要求 (3)
3 原理简介 (4)
3.1 基本概念 (4)
3.2 原理分析 (4)
3.2.1 离散傅里叶变换(DFT)和快速傅里叶变换(FFT) (4)
3.2.2 序列的卷积和快速卷积运算 (5)
3.2.3 快速傅里叶变换和快速卷积 (5)
4 程序设计及仿真结果分析 (6)
4.1 题目一 (6)
4.2 题目二 (7)
4.3 题目三 (9)
5 心得体会 (13)
6 参考文献 (14)
1 Matlab软件介绍
MMATLAB是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用,此外许多的MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
MATLAB 产品族可以用来进行以下各种工作:
(1) 数值分析
(2) 数值和符号计算
(3) 工程与科学绘图
(4) 控制系统的设计与仿真
(5) 数字图像处理技术
(6) 数字信号处理技术
(7) 通讯系统设计与仿真
(8) 财务与金融工程
MATLAB 的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB 函数集)扩展了MATLAB 环境,以解决这些应用领域内特定类型的问题。
它的主要特点是:
(1)Matlab可以用来解线性方程组、进行矩阵变换与运算、数据插值运算等,能使用户从繁杂的数学运算分析中解脱出来。
(2)Matlab中有许多高级的绘图函数,包括二维、三维、专用图形函数、图形句柄、用户图形界面工具等,利用这些函数可以轻松地完成各种图形的绘制和编辑工作,实现计算结果和编程的可视化。
(3)友好的用户界面及接近数学表达式的自然化语言,使学习者易于学习和掌握。
(4)功能丰富的应用工具箱(如信号处理工具箱,通信工具箱,控制系统工具箱等)为用户提供了大量方便实用的处理工具。
Matlab的上述特点,使它深受工程技术人员及科技专家的欢迎,并很快成为应用学科计算机辅助分析、设计、仿真、教学等领域不可缺少的基础软件。目前,国内很多理工院校已经或者正在把该软件作为学生必须掌握的一种软件。
2 项目设计目的及技术要求
序列的卷积和快速卷积运算的编程实现,具体包括:直接卷积及运用、快速卷积方法及实现、二者的比较分析等。
1.已知线性非移变系统的h(n)=[6,2,3,6,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 原理简介
3.1 基本概念
在数字信号处理(DSP )系统中,无论在时域或频域都离不开卷积运算和快速傅里叶(FFT )运算。Matlab 具有强大的矩阵运算能力,方便实用的绘图功能和语言的高度集成性,在DSP 开发中,使用Matlab 可以快速对系统进行仿真运算。
设输入信号为x(t),其频谱函数为X(j Ω),该信号通过滤波器h(t)后,其输出信号y(t)的频谱函数Y(j Ω)是频谱函数x(j Ω)与滤波器的频谱函数H(j Ω)的乘积,即:
)()()(ΩΩ=Ωj H j X j Y
而在时域,输出信号y(t)实际是输入信号x(t)与滤波器h(t)的卷积。就是说频谱函数的乘积相当于时间函数的卷积,反之亦然。即:
τ
ττd t h x t h t x t y ⎰∞
∞
--==)()()(*)()(
由于DSP 主要依靠计算机完成,而计算机无论在时域或频域只能处理有限长的离散信号,因此上述关系可表示为:
)()()(ωωωH X Y =
)(*)()()()(n h n x m n h m x n y m =-=
∑∞
-∞
=
式中:n 表示离散时间;数字频率ω=ΩT ;f 为输入信号频率;f,T 为抽样频率和周期。
3.2 原理分析
可以使用线性卷积、圆周卷积实现离散卷积,也可以根据时域信号函数与频谱函数的关系,使用快速傅里叶变换(FFT ,IFFT)实现离散卷积。
3.2.1 离散傅里叶变换(DFT )和快速傅里叶变换(FFT )
离散傅里叶变换,是连续傅里叶变换在时域和频域上都离散的形式,将时域信号的采样变换为在离散时间傅里叶变换频域的采样。在形式上,变换两端(时域和频域上)