matlab基2时间抽选法,按时间抽取的基2FFT算法分析及MATLAB实现

电子技术研发ElectronicsR&D

电一子一技一术~

按时问抽取的基2FFT算法分析及MATLAB实现

张登奇李宏民李丹

(湖南理工学院信息与通信工程学院)

摘要:DFT是一种应用广泛的数学变换工具,MATLAB是~款功能强大的科学计算语言。MATLAB提供的FFT函数解决了DFT的快速计算问题,但由于它是内建函数而不能了解到软件实现的过程。文章以按时间抽取的基2FFT算法为例,根据快速傅里叶变换的原理和规律,绘出了算法实现的程序框图,列出TIVIATL&B环境下软件实现的程序,建立了从算法理论到程序实现的完整概念。

关键词:数字信号处理;离散傅里叶变换;快速傅里叶变换:按时间抽取;MATLPd3AnalysisofDecimation.in.timeRadix2FFTAlgorithmand

ZhangDengqiLiHongrninLiDan

MATLAB

BasedRealization

(College

ofInformation&CommunicationEngineering,HunanInstituteofScienceandTechnology)

Abstract:DFTiSawidelyusedmathematicaItransfol'nltool。andMATLABiSapowerfulscientificcomputinglanguage.TheFFTfunctionofMATLABcansolvetheproblemsoffastcalculationofDFT,butitcan’tunderstandtheprocessofsoftwarerealizationbecauseitisabuilt-infunction.Takingthealgorithmoftheradix一2DITFFTastheexampleandbasedontheprincipleandrulesofFFT,thispaperdrawstheblockdiagramsofthealgorithmrealization,liststheproceduresofthesoftwarerealizationunderMATLABenvironment.andalsoestablishesthecompleteconceptfromalgorithmtheoriestoprogramrealization.

Keywords:digitalsignal

processing(DSP);discrete

Fourier

transform(DFT);fastFouriertransform(FFT);decimationin

time(DIT):Ⅳ队TLAB

0引言

离散傅里变换(DFT)是数字信号处理中重要的数学变换工具,自1965年库利和图基提出基2FFT算法[1]以来,现已有多种快速算法,且还在不断地进行研究和探索。本文以按时间抽取的基2FFT(DIT-FFT)算法为例,介绍FFT算法的基本原理,归纳FFT算法的运算规律,总结FFT算法的编程框图,列出MATLAB环境下软件实现的程序,从而建立起一种从算法理论到程序实现的全过程的完整概念。

主:珲嚣裟嚣篙∞

图1

DIT蝶形运算流图符号

DIT-FFT算法的运算规律及编程思想椭聃蛹椭聃鹏埘册

图2

舳枷均珊聃栅珊册

8点DIT-FFr运算流程

DIT-FFT算法的基本原理。

有限长序ylJx(n)的N,点DFT定义为:z(})‘薹。(”)瞄”,式

中%:e1等,其整数次幂简称为旋转因子。直接进行DFT运算大约需要2N2次三角函数计算,4Ⅳ2次实数乘法计算和2N(2N—1)次实数加法计算,且需许多索引和寻址操作[2I。文献[3】列出了直接DFT的MATLAB程序,这种直接DFT运算概念清楚、编程简单,但占用内存大、运算速度低,在实际工作中并不实用。基2FFT算法的基本思想是把原始的Ⅳ点序列依次分解成一系列短序列,充分利用旋转因子的周期性和对称性,分别求出这些短序列对应的DFT,再进行适当的组合,得到原JjV点序列的DFT,最终达到减少运算次数,提高运算速度的目的。按时间抽取的基2FFT算法,先是将Ⅳ点输入序列x(胛)在时域按奇偶次序分解成2个N/2点序列X,仰)和X,∽),再分别进行DFT运算,求出与之对应的xl(k)和X2(k),然后利用图l所示的运算流程进行蝶形运算,得到原N点序列的DFT。只要Ⅳ是2的整数次幂,这种分解就可一直进行下去,直到其DFT就是本身的l点时域序列。一个完整的8点DIT-FFT运算流程如图2所示[4]。图中的输入序列不再是顺序排列但有规律可循,数组A(存储地址)用于存放输入数据和每级运算的结果。

为了编写DIT-FFT算法的运算程序,首先要分析其运算规律,总结编程思想并绘出程序框图。由图2可知,DIT-FFT算法的运算过程很有规律。

2.1原位计算

对N:2u点的FFT共进行肘级运算,每级由Ⅳ/2个蝶形运算组成。在同一级中,每个蝶的输入数据只对本蝶有用,且输出节点与输入节点在同一水平线上,这就意味着每算完一个蝶后,所得数据可立即存入原输入数据所占用的数组元素(存储单元),这种原位(址)计算的方法可节省大量内存。

2.2蝶形运算

实现FFT运算的核心是蝶形运算,找出蝶形运算的规律是编程的基础。蝶形运算是分级进行的;每级的蝶形运算可以按旋转因子的指数大小排序进行;如果指数

万方数据

75

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值