您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 基于MATLAB的FFT算法实现(论文)
基于MATLAB的FFT算法实现基于MATLAB的FFT算法实现摘要MATLAB软件是目前全世界范围内非常流行的具有很强的科学计算和图形界面的软件系统。利用MATLAB的强大运算功能,可以解决数字信号处理过程中遇到的许多问题。本文给出了基于MATLAB软件实现信号DFT变换和FFT频谱分析的方法。利用MATLAB软件方法,使得设计方便、快捷,大大减轻了工作量。并且,在信号DFT变换中可以清楚得看到DFT变换结果和截取长度之间的关系。通过编程仿真可以得到序列的幅频特性曲线,便于对信号进行谱分析。FFT(FastFourierTransformation),即为快速傅立叶变换,是离散傅立叶变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。它对傅氏变换的理论并没有新的发现,但是对于在计算机系统或者说数字系统中应用离散傅立叶变换,可以说是进了一大步。在实际应用中,FFT是最常见的数字信号处理算法,它在各种数字信号处理系统中扮演重要的角色。在信号处理过程中。频域分析往往比时域分析方便和高效,FFT是时域和频域转换的基本运算。关键词:FFT算法;MATLAB;数字信号处理;频谱分析基于MATLAB的FFT算法实现THEFFTALGORITHMBASEDONMATLABABSTRACTMATLABsoftwareisverypopulararoundtheworldhaveastrongscientificcomputingandgraphicinterfaceofthesoftwaresystem.UsingthepowerfuloperationfunctionofMATLAB,cansolvemanyproblemsencounteredintheprocessofdigitalsignalprocessing.Inthispaper,basedonDFTMATLABsoftwaretorealizesignaltransformandFFTspectrumanalysismethod.UsingMATLABsoftwaremethod,makesthedesignofconvenient,quick,greatlyreducetheworkload.AndthesignalDFrtransformcanbeclearlyseenintheDFTtransformresultsandclippingoftherelationshipbetweenthelength.Sequencescanbeobtainedbyprogrammingthesimulationoftheamplitudefrequencycharacteristiccurve,facilitatethesignalspectrumanalysis.FFT(FastFourierchanged),whichisFastFouriertransform,isaFastalgorithmofdiscreteFouriertransform,itisaccordingtotheoddandevenofdiscreteFouriertransform,virtualandrealfeatures,thediscreteFouriertransformalgorithmwasimproved.ItthetheoryofFouriertransformandfoundnothingnew,buttheapplicationincomputersystemsordigitalsystemdiscreteFouriertransform,canbesaidtobeintoabigstep.Inpracticalapplications,theFFTisthemostcommonformofdigitalsignalprocessingalgorithm,itisplayanimportantroleinallkindsofdigitalsignalprocessingsystem.Intheprocessofsignalprocessing.Frequencydomainanalysisthantime-domainanalysisisconvenientandefficient,FFTisthebasicoperationofthetimedomainandfrequencydomaintransformation.Keywords:FFTalgorithm;MATLAB;Digitalsignalprocessing;Spectrumanalysis基于MATLAB的FFT算法实现目录1绪论……………………..………………………………………………………………….11.1课程设计内容…………………………………………………………………………11.2课程设计要求…………………………………………………………………………11.3课程设计目的…………………………………………………………………………11.4课程设计平台…………………………………………………………………………12概要设计…………………………………………………………………………………...32.1MATLAB及MATLAB在数字信号领域的应用…………………………………..32.2FFT算法的实现原理…………………………………….………………………..33基于MATLAB的FFT算法设计原理………………….………………..………....53.1总体设计流程图………………………………………….………………………..53.2语音信号的采集………………………………………….………………………..53.3语音信号的时频分析…………………………………….………………………..63.4快速傅里叶变换………………………………………….………………………….83.4.1FFT的运算规律………………………………….…………………………103.4.2基于MATLAB的FFT所编写程序的框图……….……………………….144调试与结果…………………………………………………………………………...155设计总结与心得体会……………………………………………………………...17参考文献……………………………………………………………………………….……..19附录…………………………………………………………………………….……………..20基于MATLAB的FFT算法实现第1页共23页1绪论1.1课程设计内容录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;在MATLAB环境下编写基2DIT-FFT算法;利用自己编写的算法对已采集的语音信号进行频谱分析,并画出语音信号的时域与频谱图,并与MATLAB数字信号处理工具箱中的fft函数进行对比研究,验证自编算法的正确性。1.2课程设计要求1、完成语音信号的采集,利用windows自带的录音机或其他软件,录制一段语音,时间在1s以内;2、在MATLAB中编写程序,实现输入信号的倒序;3、编写程序,实现蝶形运算;4、画出语音信号的频谱图,与MATLAB数字信号处理工具箱中的fft函数进行对比研究,并对设计结果进行独立思考和分析;1.3课程设计目的1、学会MATLAB的使用,掌握MATLAB的程序设计方法。2、掌握在Windows环境下语音信号采集的方法。3、掌握数字信号处理的基本概念、基本理论和基本方法。4、掌握MATLAB设计FIR和IIR数字滤波器的方法。5、学会用MATLAB对信号进行分析和处理。1.4课程设计平台MATLAB7.1软件MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动基于MATLAB的FFT算法实现第2页共23页态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。基于MATLAB的FFT算法实现第3页共23页2概要设计2.1MATLAB及MATLAB在数字信号领域的应用MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。MATLAB的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和测量、财务建模和分析以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,是一款数据分析和处理功能都非常强大的工程适用软件。它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数据滤波、傅立叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱位语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便的完成语音信号的处理和分析以及信号的可视化。数字信号处理是MATLAB重要应用的领域之一。2.2FFT算法的实现原理对于有限长序列x(n),若要求其N点的傅里叶变换(DFT)需要经过2N次复数乘法运算和N*(N-1)次复数加法运算。随着N的增加,运算量将急剧增加,而在实际问题中,N往往是较大的,如当N=1024时,完成复数乘法和复数加法的次数分别为百万以上,无论是用通用计算机还是用DSP芯片,都需要消耗大量的时间和机器内存,不能满足实时的要求。因此,DFT的这种运算只能进行理论上的计算,不适合对实时处理要求高的场合。因此,研究作为DSP的快速算法的FFT是相当必要的,快速傅里叶变换(FFT)是为提高DFT运算速度而采用的一种算法,快速算法的种类很多,而且目前仍在改进和提高,它是根据离散傅里叶变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。基于本学期所学的DIT-FFT的运算规律和编程思想以及MATLAB的基于MATLAB的FFT算法实现第4页共23页学习和使用,本课设要求在MATLAB环境下编写基2DIT-FFT算法实现对离散信号的快速傅里叶变换,再与MATLAB软件自带的FFT函数实现对离散信号的傅里叶变换进行比较,如果得到的频谱相同,那么我们编写的程序就是正确的。其中离散信号是通过PC自带的录音机录制一段wav语音信号,用MATLAB采样得到离散序列x1。如果有能力可以选做系统人机对话界面。用GUI界面完成人机交互方便使用的。本课程设计主要是对数字信号的分析。基于MATLAB的FFT算法实现第5页共23页3基于MATLAB的FFT算法设计原理3.1总体设计流程图在一个相对较安静的环境下,录下1s左右的wav声音信号,然后对声音进行采样,画出其时域波形和频谱图,其流程图如图1所示:图1设计流程图3.2语音信号的采集在实际工作中,我们可以利用windows自带的录音机录制语音文件。采集到语音信号之后,需要对语音信号进行分析,如语音信号的时域分析、频谱分析、语谱图分析。在MATLAB中,我们可以通过[y,fs,bits]=wavread('语音信号路径',[N1N2])语句。用于读取语音,采样值放在向量y中,fs表示采样频率(Hz),bits表示采样位数。[N1N2]表示读取从N1点到N2点的值(若只有一个N的点则表示读取前N点的采样值)。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。开始输入声音信号对声
本文标题:基于MATLAB的FFT算法实现(论文)
链接地址:https://www.777doc.com/doc-2570533 .html