快速傅立叶变换FFT课件_第1页
快速傅立叶变换FFT课件_第2页
快速傅立叶变换FFT课件_第3页
快速傅立叶变换FFT课件_第4页
快速傅立叶变换FFT课件_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章快速傅立叶变换(FFT)4.1引言FFT是DFT的快速算法提出与发展由库利(J.K.Cooly)和图基(J.KTuky)相继出现了桑得(G.Sand)-图基等快速算法价值使运算效率提高了1~2个数量级推动了数字信号处理技术的应用和发展分裂基FFTFFT是DFT的一类快速算法第四章快速傅立叶变换(FFT)4.1引言FFT是DFT的14.2基2FFT算法4.2.1直接计算DFT的问题及改进的方法4.2.2时域抽取法基2FFT基本原理4.2.3DIT-FFT算法运算量4.2.4DIT-FFT的运算规律及编程思想4.2.5频域抽取法FFT(DIF-FFT)4.2.6IDFT的高效算法(实验:要求购买数字信号处理实习指导书,熟悉MATLAB语言等)4.2基2FFT算法4.2.1直接计算DFT的问题24.2基2FFT算法4.2.1直接计算DFT的问题及改进的方法DFT的定义两者形式类似,差别只在于的指数符号不同,及常数因子。运算量是相同的4.2基2FFT算法4.2.1直接计算DFT的问题3(1)正变换的运算量每计算一个X(k)需要N次复数乘法,(N-1)次复数加法计算N点X(k),则需要N2次复数乘法,N(N-1)次复数加法即:计算量正比于N2,这也是产生快速算法的思想由来.因为均为复数注意:指数运算(1)正变换的运算量每计算一个X(k)需要N次复数乘法,(4(2)减少运算量的途径(利用DFT的性质)对称性周期性具有如下特性:旋转因子利用这些特性:1.使DFT运算中的有些项可以合并。2.可将长序列的DFT分解为短序列的DFT。更加有用的性质(2)减少运算量的途径(利用DFT的性质)对称性周期性具有如5

FFT的基本思想在于,将原有的N点序列分成两个较短的序列,这两个序列的DFT组合起来,得出原序列的DFT。剩下的问题是怎么分?:前后分或抽取分.?4.2.2时域抽取法基2FFT基本原理FFT算法分为两大类时域抽取法(DIT)频域抽取法(DIF)此处可以说明基2的由来FFT的基本思想在于,将原有的N点序列分成两个较短的6设M为自然数将长度为N的序列x(n)按n的奇偶分成两组则x(n)的DFT为一、时域抽取法基本原理设M为自然数将长度为N的序列x(n)按n的奇偶分成两组则x(7由于所以时域抽取法基本原理式中,是x(2r)与x(2r+1)的N/2点DFT(因为长度,求和范围和W均是针对N/2的。由于所以时域抽取法基本原理式中,是x(2r)与x(2r+1)8时域抽取法基本原理上式可见,一个N点DFT已分解为两个N/2点的DFTX1(k)与X2(k)的组合。此时计算量已经变化。为使这种计算量变化更明显地表现出来:把分成两部分来求,此时必须应用旋转因子的周期性:时域抽取法基本原理上式可见,一个N点DFT已分解为两个N/29时域抽取法基本原理由于分成两部分来求:时域抽取法基本原理由于分成两部分来求:10X

(k)的后半部分为:时域抽取法基本原理再考虑到旋转因子的特性:所以只要求出0~N/2-1区间上X1(k)与X2(k)的值,即可得到0~N-1区间内所有X

(k)的值。X(k)的后半部分为:时域抽取法基本原理再考虑到旋转因子的11时域抽取法基本原理X

(k)的运算可用蝶形信号流图表示简记为下图形式:时域抽取法基本原理X(k)的运算可用蝶形信号流图表示简记为12N点DFT一次时域抽取分解图(N=8)N/2点DFTN/2点DFT时域抽取法基本原理N点DFT一次时域抽取分解图(N=8)N/2点N/2点时域抽13时域抽取法基本原理计算量分析:分成两部分(1)DFT(2)蝶形运算(1)每个N/2点的DFT需要(N/2)2次复数乘,N/2(N/2-1)次复数加。两个N/2点的DFT需要N2/2次复数乘,N(N/2-1)次复数加。(2)计算一个蝶形,需要1次复乘,2次复加。将两个N/2点的DFT合并成N点DFT,有N/2个蝶形运算,还需要N/2次复数乘及N次复数加。总计算量:计算N点DFT共需要N2/2+N/2

N2/2次复数乘,N(N/2-1)+N

N2/2次复数加。只分解一次运算量就减少一半。这种分解方法可一直进行到左侧为两点DFT为止。时域抽取法基本原理计算量分析:分成两部分(1)DFT14时域抽取法基本原理与第一次分解相同,将x1(r)按r的奇偶分成两个长为N/4的子序列:且时域抽取法基本原理与第一次分解相同,将x1(r)按r的奇偶分15时域抽取法基本原理x2(r)也可以进行同样的处理,得到X2(k)其中,将旋转因子统一为,则一个N点DFT就可分解为4个N/4点的DFT.时域抽取法基本原理x2(r)也可以进行同样的处理,得到X216N点DIT-FFT运算流图N/4点DFTN/4点DFTN/4点DFTN/4点DFTN点DIT-FFT运算流图N/4点N/4点N/4点N/4点17时域抽取法基本原理最后剩下的是2点DFT,当N=8时,其输出为:以X4(k)为例,因为即x(2),x(6)通过蝶形运算得到X4(k)时域抽取法基本原理最后剩下的是2点DFT,当N=8时,其输出18N点DIT-FFT运算流图N点DIT-FFT运算流图19N点DIT-FFT运算流图N点DIT-FFT运算流图N=8此图的重要性:理解FFT算法实质;分析计算量;设计FFT算法程序等N点DIT-FFT运算流图N点DIT-FFT运算流图20当时,可分解为M级蝶形,每级都有N/2个蝶形运算。(基2由来)每一级N/2次复数乘;N次复数加。则M级次复数乘次复数加与直接计算DFT的运算量之比4.2.3DIT-FFT算法运算量当时,可分解为M级蝶形,每级都有N/2个蝶形运算。(基2由来21与直接计算DFT的运算量之比计算速度的提高是巨大的:例如P101图4.2.54.2.3DIT-FFT算法运算量与直接计算DFT的运算量之比4.2.3DIT-FFT算法221、原位计算(就地算法)4.2.4DIT-FFT的运算规律及编程思想3、蝶形运算规律及编程思想2、旋转因子的变化规律4、倒位序规律5、倒位序实现1、原位计算(就地算法)4.2.4DIT-FFT的运算23DIT-FFT的运算规律及编程思想1.原位计算(就地算法)用同一地址既存输入序列又存输出序列的算法。如图4.2.4,每级运算由N/2个蝶形构成,每个蝶形完成下述基本运算:式中L代表第L级蝶形运算。J、J+B代表数据所在行。B表示蝶形运算的两个输入相距B个点。DIT-FFT的运算规律及编程思想1.原位计算(就地算法)24运算规律DIT-FFT的运算规律及编程思想每个蝶形运算的两个输入数据只对计算本蝶形有用,而且每个蝶形的输入、输出数据节点又在同一水平线上。这样,蝶形的两个输出值仍放回蝶形的两个输入所在的存储器中。每列的N/2个蝶形运算全部完成后,再开始下一列的蝶形运算。下一列仍采用原位运算,只是进入蝶形的组合关系有所不同。运算规律DIT-FFT的运算规律及编程思想每个蝶形运算的两个25DIT-FFT的运算规律及编程思想2.旋转因子的变化规律观察图4.2.4,第L级共有2L-1个不同的旋转因子。称为旋转因子,p称为旋转因子的指数。级(L):从左到右的运算级数。(L=1,2,…M)DIT-FFT的运算规律及编程思想2.旋转因子26旋转因子与级数(L)的关系更一般地第L级的旋转因子为DIT-FFT的运算规律及编程思想旋转因子与级数(L)的关系更一般地第L级的旋转因子为DI27蝶形运算两输入点间距离为:第1级:1第2级:2第3级:4第L级:2L-1

每一级的两个输入节点进行蝶形运算后,得到下一级的相同序号的两个输出节点。DIT-FFT的运算规律及编程思想3.蝶形运算规律(1.端点间距2.相邻间距)蝶形运算两输入点间距离为:第1级:1第2级:228对于每个旋转因子,有2M-L个蝶形运算。第一个蝶形的第一个输入所在行为J,第二个蝶形的第一个输入所在行为J+2L,相邻两个蝶形运算第一个输入相距2L。DIT-FFT的运算规律及编程思想对于每个旋转因子,有2M-L个蝶形运算。DIT-FFT的运算29编程思想先从输入端开始,逐级进行计算,共进行M级运算。在进行第L级运算时,依次求出2L-1个不同的旋转因子,每求一个旋转因子,就计算完它对应的所有2M-L个蝶形。(结合编程说明:三层循环,最内层计算为:一个蝶形的计算,结合图4.2.4)DIT-FFT的运算规律及编程思想编程思想先从输入端开始,逐级进行计算,共进行M级运算。DIT30开始输入x(n),MN=2M倒序L=1,MB2L-1J=0,B-1P=2M-L.Jk=J,N-1,2L输出结束L表示运算级数旋转因子个数对旋转因子计数计算旋转因子指数每个旋转因子对应2M-L个蝶形运算。两个蝶形运算第一个输入点‘距离’是2L此流程图是针对C写的,MATLAB时要相应修改开始输入x(n),MN=2M倒序L=1,MB2L314.倒位序规律若是三位二进制数,则就是它的倒位序。按原位计算时,FFT的输出X(k)是按自然顺序存储的,但这时输入序列却不是按自然顺序存储的。输入序列初看起来,好象没有规律,实际是按倒位序存储的。DIT-FFT的运算规律及编程思想4.倒位序规律若是三位二进制数,则就是它的倒位序。按原位计32DIT-FFT的运算规律及编程思想倒位序的形成00100011010111x(111)=x(7)x(000)=x(0)x(010)=x(2)x(110)=x(6)x(001)=x(1)x(101)=x(5)x(100)=x(4)造成倒位序的原因是输入序列x(n),按标号(序号)n的奇偶不断地分组造成的。x(011)=x(3)DIT-FFT的运算规律及编程思想倒位序的形成0010001335.倒位序的实现DIT-FFT的运算规律及编程思想(1)只要将顺序二进制数(n2n1n0)的二进制位倒置,得(n0n1n2)。根据这种规律,容易用硬件电路和汇编语言产生倒位序数。(2)用高级语言程序实现时,必须找出产生倒序数的十进制运算规律。5.倒位序的实现DIT-FFT的运算规律及编程思想(134DIT-FFT的运算规律及编程思想000000001

001

4

100201020103

011

6

1104

100

1

001510151016

110

3

01171117111左边为按自然顺序排列的二进制数,下面的一个数是上面一个数的最低位上加上1,且向高位进位。右边为倒位序数,下面的一个数是上面一个数的最高位上加上1,且由高位向低位进位。称为反向进位加法顺序与倒序二进制对照表可由当前任一倒序值求得下一个倒序值DIT-FFT的运算规律及编程思想000035反向进位加法的实现(十进制情况)若已知某个倒位序数J,求下一个倒位序数,判断J的最高位是否为“0”,让J与N/2比较,因为N/2总是100……,如果J<N/2,则J

的最高位为零,只需把该位变为1(J=J+N/2),就得到下一个倒位序数,否则,把最高位变为0(J=J-N/2)判断J的次高位是否为“0”,让J与N/4比较,如果J

的次高位为零,只需把该位变为1(J=J+N/4),其它位不变,就得到下一个倒位序数,否则,还需判断下一位(与N/8比较),如此依次进行下去,总会碰到某位为0,将此位改为1即可.DIT-FFT的运算规律及编程思想反向进位加法的实现(十进制情况)若已知某个倒位序数J,求下一36J<KNo实现倒位序的流程图DIT-FFT的运算规律及编程思想上一个倒序数下一个倒序数J<KNo实现倒位序的流程图DIT-FFT的运算规律及编程思37形成倒序数后,把原来按自然顺序存放在存储单元的输入序列x(n)重新按倒序排列。通过变址运算完成倒位序时,不必调换。而当时,需调换。变址形成倒序数后,把原来按自然顺序存放在存储单元的输入序列x(n384.2.5频域抽取法FFT(DIF-FFT)与DIT相对应,DIF算法是将频域X(k)的序号k按奇偶分开。推导过程设M为自然数则x(n)的DFT为4.2.5频域抽取法FFT(DIF-FFT)与DIT相39式中分别令k=2r,k=2r+1,r=0.1……,N/2-14.2.5频域抽取法FFT(DIF-FFT)式中分别令k=2r,k=2r+1,r=0.1……,N/2-140令则4.2.5频域抽取法FFT(DIF-FFT)令则4.2.5频域抽取法FFT(DIF-FFT)414.2.5频域抽取法FFT(DIF-FFT)由于N=2M,N/2仍然是偶数,继续将N/2点的DFT分成偶数组和奇数组。这样每个N/2点DFT可由两个N/4点DFT形成。其输入序列分别是x1(n)和x2(n)按上下对半分开形成的四个子序列。4.2.5频域抽取法FFT(DIF-FFT)由于N=242DIF与DIT算法的比较基本蝶形不同都有M级运算,每级有N/2个蝶形都可进行原位计算运算次数相同输入为自然顺序,输出为倒位序4.2.5频域抽取法FFT(DIF-FFT)这样将X(k)按k的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论