目 录
1前言 .............................................................. 1 2 FFT算法设计原理 .................................................. 2 3基于MATLAB的FFT算法实现与分析 ................................ 4
3.1 MATLAB简介 ................................................ 4 3.2 MATLAB中FFT算法实现程序 .................................. 6
3.2.1原图程序及分析 .......................................... 6 3.2.2灰度图程序及分析 ........................................ 7 3.2.3自建的FFT程序及分析 .................................... 8 3.2.4自建的IFFT程序及分析 ................................... 9 3.2.5内置的FFT程序及分析 ................................... 10 3.2.6内置的IFFT程序及分析 .................................. 10 3.3自建FFT与内置FFT图形及比较 ............................... 11 3.4 IFFT结果与原灰度图形及比较 ................................. 12 4 FFT算法用GUI的实现与分析 ...................................... 13
4.1 GUI简介 .................................................... 13 4.2 GUI实现FFT算法 ............................................ 14
4.2.1界面设计 ............................................... 15 4.2.2运行调试 ............................................... 16 4.3运行结果分析比较 ............................................ 17 5总结体会 ......................................................... 18 参考文献 .......................................................... 19 附录I ............................................................. 20 附录II ............................................................. 24
唐山学院课程设计
1 前言
数字信号处理(Digital Signal Processing,DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。在过去的二十多年时间里,数字信号处理已经应用及渗透到许多重要科学和技术领域中,尤其在通信等领域得到极为广泛的应用。
傅里叶变换在信号处理中具有十分重要的作用,但是基于离散时间的傅里叶变换具有很大的时间复杂度,根据傅里叶变换理论,对一个有限长度且长度为的离散信号,做傅里叶变换的时间复杂度为,当很大时,其实现的时间是相当惊人的比如当为时,其完成时间为(为计算机的时钟周期),故其实现难度是相当大的,同时也严重制约了DFT 在信号分析中的应用,故需要提出一种快速的且有效的算法来实现。 ??
正是鉴于DFT 极其复杂的时间复杂度,1965 年和巧妙地利用因子的周期性和对称性,提出了一个DFT 的快速算法,即快速傅里叶变换(FFT),从而使得DFT 在信号处理中才得到真正的广泛应用。
本文基于时间抽选奇偶分解,利用MATLAB 软件实现快速傅里叶变换。基于所编的FFT 源程序应用的一个实例,本文对有限长度离散时间和连续时间信号进行频谱分析。
DFT是一种应用广泛的数学变换工具,MATLAB是一款功能强大的科学计算语言。MATLAB提供的fft函数解决了DFT的快速计算问题,但由于它是内建函数而不能了解到软件实现的过程。文章以按时间抽取的基2FFT算法为例,根据快速傅里叶变换的原理和规律,绘出了算法实现的程序框图,列出了MATLAB环境下软件实现的程序,建立了从算法理论到程序实现的完整概念。
在信号处理中,DFT(离散傅里叶变换)的计算具有举足轻重的地位。但是基于其复杂的计算,直接应用起来十分麻烦,基于此,本文利用MATLAB 软件对有限长度信号的DFT 进行改进,提出FFT(快速傅里叶变换),并利用FFT 对所给连续时间和离散时间信号做了频谱分析。
1
唐山学院课程设计
2 FFT算法设计原理
快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法。 对一个有限长度序列x(n)的N点的DFT为: nkX?k???x?n?WN,k?0,1,2,...,N?1n?0N?11x?n??N ?X?k?Wk?0N?1?nkN,n?0,1,2,...,N?1所以,要求N点的DFT,需要N2的复数乘法运算,N?(N?1)次复数乘法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间,不能满足实时的要求,不适合于对实时处理要求高的场合。为了能实时处理DFT,要想减少DFT的运算量可以有两个途径:第一是降N,N的值减小了,运算量就减少了;第二是利用旋转因子的周期性,对称性和可约性。利用这两个途径实现DFT的快速傅里叶变换(FFT),FFT算法基本上可分为按时间抽取的FFT算法(FFT)和按频率抽取的FFT算法(FFT)。
旋转因子的性质: 周期性 共轭对称性 可约性
kn(k?N)nk(n?N)WN?WN?WNkn(?k)n*k(?n)*WN?[WN]?[WN]mknWNkn?WmN,/mWNkn?WNkn/m本次课设要求用用基2的按时间抽取的FFT算法(DIT-FFT)实现FFT功能,设序列x(n)的长度为N,且N满足N=2M,M为正整数。若N不能满足上述关系,可以将序列x(n)补零实现。按时间抽取基2-FFT算法的基本思路是将N点序列按时间下标的奇偶分为两个N/2点序列,计算这两个N/2点序列的N/2点DFT,计算量可减小约一半;每一个N/2点序列按照同样的划分原则,可以划分为两个N/4点序列,最后,将原序列划分为多个2点序列,将计算量大大降低。
按时间下标的奇偶将N点x(n)分别抽取组成两个N/2点序列,分别记为x1(n)和x2(n),将x(n)的DFT转化为x1(n)和x2(n)的DFT的计算。
2
唐山学院课程设计
??x(2r)?x1(r)??,x(2r?1)?x2(r)?nkX?k???x?n?WNn?0N?2N?1r?0,1,??,N?12?n?0,2,4...N?12?x?n?WnkN?n?1,3,5...N?12?x?n?WN?1nkNr?0,1N?12?2rkx?2r?WN?r?0,1N?12??x?2r?1?WN2r?1?kr?0,1?x?r?W12rkN?r?0,1?x?r?W?22r?1?kN利用旋转因子的可约性,即: WN
用蝶形运算可表示为如图2-1所示:
图2-1 DIT-FFT蝶形运算流图符号
2rk?e2??j2rkN?j?e2?rkN2rk?WN2rkkrkXk?xrW?WxrW????????1NN2N
r?02r?0k?X(?WNX(k),0?k?N?11k)2N?12N?122以此类推,还可以把x1(n)和x2(n)按n值得奇偶分为两个序列,这样就达到了降N得目的,从而减少了运算量。FFT对DFT的数学运算量改进:
直接采用DFT进行计算,运算量为N2次复数乘法和N?(N?1)次复数乘法。 当采用M次FFT时,由N?2求得M=logN,运算流图有M级蝶形,每一级都由N/2个蝶形运算构成,这样每一级蝶形运算都需要N/2次复数乘法和N次复数加法。M级运算共需要复数乘法次数为C?(N?M)/2,复数加法次数为
C?N?M。
M当N值较大时,FFT减少运算量的特点表现的越明显。
3
唐山学院课程设计
3 基于MATLAB的FFT算法实现与分析
3.1 MATLAB简介
MATLAB是“矩阵实验室”(MATrix LLABoratoy)的缩写,是目前应用极为广泛的一种集科学运算、程序运算、高质量的图形可视化与界面设计,以便于与其它程序和语言接口的软件。目前,MATLAB已成为自动控制、数字信号处理、动态系统仿真等诸多学科极有效的工具。
MATLAB启动后,产生的工作环境界面如下图3-1所示,它包含一个工作栏、三个区域、四个工作窗口。中四个工作窗口分别为指令窗口(Command Windows)、指令历史窗口(commond history)、工作空间窗口(workspace)和当前路径窗口(current directory)。
图3-1 MATLAB默认的用户界面
图3-1是MATLAB启动后桌面布置方式的默认设置。
MATLAB的指令窗口(Command Windows)是MATLAB十分重要的做成部分,是用户与MATLAB交互的工具。MATLAB的功能是通过大量的函数或者指
图3-2 MATLAB的指令窗口
4
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库数字信号处理课设基于MATLAB的FFT算法的设计在线全文阅读。
相关推荐: