matlab课程结题报告

matlab课程结题报告

ID:12946010

大小:356.00 KB

页数:14页

时间:2018-07-19

matlab课程结题报告_第1页
matlab课程结题报告_第2页
matlab课程结题报告_第3页
matlab课程结题报告_第4页
matlab课程结题报告_第5页
资源描述:

《matlab课程结题报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《MATLAB与信号处理系统课程设计》课程性质:考察学号:姓名:专业:通信工程授课教师:完成日期:快速傅里叶变换-基2时间抽取FFT算法matlab实现 作者姓名:摘要:FFT是一种快速的傅里叶变换。DFT是信号分析与处理中的一种重要变换。人们不断地把长序列的DFT分解成几个短序列的DFT,并利用旋转因子的周期性和对称性来减少DFT的运算次数,FFT随之产生了。MATLAB提供的FFT函数是一个计算DFT的智能程序,能自动选择快速算法进行DFT运算.按基2时间抽取FFT算法,根据傅里叶变换的原理和规律,绘出了算法实现的程序框图,列出了MATLAB环境下软件实现的程序,建立

2、了从算法理论到程序实现的完整概念。 关键字:离散傅里叶变换;快速傅里叶变换;按时间抽取;MATLABDFT是信号分析与处理中的一种重要变换。但直接计算DFT的计算量与变换区间长度N的平方成正比,当N较大时,计算量太大,直接用DFT算法进行谱分析和信号的实时处理是不切实际的。所以快速傅里叶变换FFT在此时就出现了,大大提高了DFT算法的效率,推动了数字信号处理技术的发展。有限长序列x(n)的N点DFT定义为:,式中,其整数次幂简称为旋转因子。直接进行DFT运算大约需要次三角函数计算、次实数乘法计算和次实数加法计算,且需许多索引和寻址操作[2]。本文列出了直接DFT的MAT

3、LAB程序,这种直接DFT运算概念清楚、编程简单,但占用内存大、运算速度低,在实际工作中并不实用。基2FFT算法的基本思想是把原始的N点序列依次分解成一系列短序列,充分利用旋转因子的周期性和对称性,分别求出这些短序列对应的DFT,再进行适当的组合,得到原N点序列的DFT,最终达到减少运算次数,提高运算速度的目的。1.DIT-FFT算法的运算规律DFT的算法和时间复杂度对于一个长度为N的离散信号序列x[n],其DFT变换为(1)其中对任意完成(2)式的计算要做N次复数乘法和N-1次复数加法,那么对于(1)就要做N次复数乘法和N(N-1)次复数加法,其时间复杂度是O(N2)

4、,计算工作量和运算时间是非常巨大的。故要对其进行性质分析,进而做出快速的算法实现DFT,以便计算机能够快速实现,从而在实际信号处理工作中得到广泛的应用。按时间抽取的基2FFT算法,先是将N点输入序列x(n)在时域按奇偶次序分解成2个N/2点序列x1(n)和x2(n),再分别进行DFT运算,求出与之对应的X1(k)和X2(k),然后利用下图所示的运算流程进行蝶形运算,得到原N点序列的DFT。用N/2点X1(k)和X2(k)表示序列x(n)的N点DFTX(k) 注意:这里的k的取值范围为0,1,…N-1蝶形运算符号DIT蝶形运算流图符号为了编写DIT-FFT算法的运算程序,

5、首先要分析其运算规律,总结编程思想并绘出程序框图。由下图可知,DIT-FFT算法的运算过程很有规律。8点DIT-FFT运算流程2.编程思想实现FFT运算的核心是蝶形运算,找出蝶形运算的规律是编程的基础。蝶形运算是分级进行的;每级的蝶形运算可以按旋转因子的指数大小排序进行;如果指数大小一样则可从上往下依次蝶算。对点的FFT共有M级运算,用L表示从左到右的运算级数(L=1,2,…,M)。第L级共有个不同指数的旋转因子,用R表示这些不同指数旋转因子从上到下的顺序(R=0,1,…,B-1)。第R个旋转因子的指数,旋转因子指数为P的第一个蝶的第一节点标号k从R开始,由于本级中旋转因

6、子指数相同的蝶共有个,且这些蝶的相邻间距为,故旋转因子指数为P的最后一个蝶的第一节点标号k为:,本级中各蝶的第二个节点与第一个节点都相距B点。应用原位计算,蝶形运算可表示成如下形式:图3DIT-FFT运算程序框图总结上述运算规律,可采用如下运算方法进行DIT-FFT运算。首先读入数据,根据数据长度确定运算级数M,运算总点数,不足补0处理。然后对读入数据进行数据倒序操作。数据倒序后从第1级开始逐级进行,共进行M级运算。在进行第L级运算时,先算出该级不同旋转因子的个数(也是该级中各个蝶形运算两输入数据的间距),再从R=0开始按序计算,直到R=B-1结束。每个R对应的旋转因子指

7、数,旋转因子指数相同的蝶从上往下依次逐个运算,各个蝶的第一节点标号k都是从R开始,以为步长,到(可简取极值N-2)结束。考虑到蝶形运算有两个输出,且都要用到本级的两个输入数据,故第一个输出计算完毕后,输出数据不能立即存入输入地址,要等到第二个输出计算调用输入数据完毕后才能覆盖。这样数据倒序后的运算可用三重循环程序实现。整个运算流程如图所示。3.程序源代码%基2DIT-FFT运算的MATLAB程序clc;closeall;clear;formatcompact;%输入数据并计算常量xn=[0,1,2,3,4,5,6,7];%可取

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。