1、第 1 页 第四章 快速傅里叶变换Fast Fourier Transformu福建农林大学金山学院信息与机电工程系 u ( )数字信号处理 Digital Signal Processing腆浊散参畏交子恃犀坐佩扁塑炊琵揩投救车撰滩索无宿戎缴剿秉鸭汀语株第四章快速傅里叶变换第四章快速傅里叶变换第 2 页 本章内容u介绍傅里叶变换的一些快速算法u快速算法的思想根据原始变换定义的运算规律,及其中某些算子的特殊性,找出减少乘法和加法运算次数的有效途径,实现原始变换的各种高效算法。叶畦父勒大毫箔榨仗塞声虾放庆摸阁刽苍躇撩店妓丰这踞成哈调禄祈售抄第四章快速傅里叶变换第四章快速傅里叶变换第 3 页 u了
2、解直接计算 N点 DFT的运算量u了解减少运算量的基本途径u理解按时间抽取的基 -2FFT算法的算法原理、运算流图、所需计算量和算法特点u了解按时间抽取的基 -2FFT算法的编程思想u理解按频率抽取的基 -2FFT算法的算法原理、运算流图、所需计算量和算法特点本章学习目标逝窗才政胺序煽诚卖岭噪史苇愁拒桃瞬须崎升通例泛画法捐芳格腕励滑膳第四章快速傅里叶变换第四章快速傅里叶变换第 4 页 u 离散傅里叶变换不仅具有明确的物理意义,更便于用计算机处理。但是,直至上个世纪六十年代,由于数字计算机的处理速度较低以及离散傅里叶变换的计算量较大,离散傅里叶变换长期得不到真正的应用,快速离散傅里叶变换算法的提
3、出,才得以显现出离散傅里叶变换的强大功能,并被广泛地应用于各种数字信号处理系统中。近年来,计算机的处理速率有了惊人的发展,同时在数字信号处理领域出现了许多新的方法,但在许多应用中始终无法替代离散傅里叶变换及其快速算法。 4.1 引言臻支怀陇策屿茶邮棍咏斤歉即韵哉缄沥脾踏倍误潍枪袍汤迅率邯枫艇畸葱第四章快速傅里叶变换第四章快速傅里叶变换第 5 页 FFT产生故事虽然频谱分析和 DFT运算很重要,但在很长一段时间里,由于 DFT运算复杂,并没有得到真正的运用,而频谱分析仍大多采用模拟信号滤波的方法解决。当时加文 (Garwin)在自已的研究中极需要一个计算傅里叶变换的快速方法。他注意到图基 (J.
4、W.Turkey)正在写有关傅里叶变换的文章,因此详细询问了图基关于计算傅里叶变换的技术知识。图基概括地对加文介绍了一种方法,它实质上就是后来的著名的库利 (Cooley J.W)图基算法。在加文的迫切要求下,库利很快设计出一个计算机程序。 1965年库利 -图基在 、 Mathematic of Computation 杂志上发表了著名的 “机器计算傅里级数的一种算法 ”文章,提出一种快速计算 DFT的方法和计算机程序 -揭开了 FFT发展史上的第一页。促使 FFT算法产生原因还有 1967年至 1968年间 FFT的数字硬件制成,电子数字计算机的条件, 使 DFT的运算大简化了。1984年
5、,法国的杜梅尔 (P.Dohamel)和霍尔曼 (H.Hollmann)将基 2分解和基 4分解糅合在一起,提出了分裂基 FFT算法。其运算量比前几种算法都有所减少,运算流图却与基 2FFT很接近,运算程序也很短。它是目前一种实用的高效新算法。惊荆蛤痛舆磐蔡失始县挺肌纤玄畸朱喂拖友里擒眷蚤卞侧例兑尉厦硅辨憎第四章快速傅里叶变换第四章快速傅里叶变换第 6 页 4.2 基 2FFT算法u有限长序列通过离散傅里叶变换 (DFT)将其频域离散化成有限长序列。但其计算量太大 (与 N的平方成正比) ,很难实时地处理问题,因此引出了快速傅里叶变换 (FFT)。u FFT并不是一种新的变换形式,它只是 DF
6、T的一种快速算法 ,并且根据对序列分解与选取方法的不同而产生了 FFT的多种算法。u FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。伯超否混妈雕井僚戳尺辛僧题体墨疹括余袖场私找扶棒纳私捞镐涅牢嫡涣第四章快速傅里叶变换第四章快速傅里叶变换第 7 页 问题提出: 设有限长序列 x(n),非零值长度为 N,计算对 x(n)进行一次 DFT运算,共需多大的运算工作量 ?4.2.1 直接计算 DFT的特点及减少运算量的基本途径幕妒募这核憋窟参邀杉机角柱册踞僳拢迈仇弱颠缅鼓莽痒忱昧粗砧伦狗阶第四章快速傅里叶变换第四章快速傅里叶变换第 8 页 其中 x(n)为复数, 也为复数,所以 DFT
7、与 IDFT二者计算量相同。1.比较 DFT与 IDFT的运算量4.2.1 直接计算 DFT的特点及减少运算量的基本途径体天贪樊寅砖诵尝廓遮汽啥蒙萄贿像躺潮捕棒墓吹培然憾靳霞剧澄技罗掖第四章快速傅里叶变换第四章快速傅里叶变换第 9 页 计算一个 X(k)(一个频率成分 )值,运算量为例 k=1则要进行 N次复数乘法, (N-1)次复数加法,所以,要完成整个DFT运算,其计算量为:N*N次复数相乘和 N*(N-1)次复数加法4.2.1 直接计算 DFT的特点及减少运算量的基本途径2.以 DFT为例计算复数运算量董抗励殖偿醇亚祟腥害金采擦仓凿琉况财宦伊寒益珐俞舷盲理泳铲甫遗荒第四章快速傅里叶变换第
8、四章快速傅里叶变换第 10 页 一个复数乘法包括 4个实数乘法和 2个实数加法。(a+jb)(c+jd)=(ac-bd)+j(bc+ad)所以所有 X(k)就要 4N2次实数乘法运算 ,2N2 2N(N-1) N(4N-2)次实数加法运算。当 N很大时 ,运算量将是惊人的 , 这样 ,难以做到实时处理。 4次实数乘法2次实数加法4.2.1 直接计算 DFT的特点及减少运算量的基本途径3.一次复数乘法换算成实数运算量裙御炯乃碰喜捉裹屡紊蛊霖辩搅俄皿彝调氟叫症孟扁肩硕忍瑞档薪在直兼第四章快速傅里叶变换第四章快速傅里叶变换第 11 页 例 1:当 N=1024点时,直接计算 DFT需要:N2=220
9、=1048576次,即一百多万次的复乘运算,这对实时性很强的信号处理 (如雷达信号处理 )来讲,它对计算速度有十分苛刻的要求 迫切需要改进 DFT的计算方法,以减少总的运算次数。例 2:石油勘探, 24道记录,每道波形记录长度 5秒,若每秒抽样 500点 /秒,每道总抽样点数 =500*5=2500点, 24道总抽样点数 =24*2500=6万点, DFT运算时间 =N2=(60000)2=36*108次4.2.1 直接计算 DFT的特点及减少运算量的基本途径3.一次复数乘法换算成实数运算量栗家防舷埠碌扎评霖束福孩仅臭变烹嚏铂倦泼莲苛亏简妥访哪牌山坊刽铝第四章快速傅里叶变换第四章快速傅里叶变换
10、第 12 页 FFT算法对于 N点 DFT,仅需 (N/2)log2N 次复数乘法运算和 Nlog2N 次复数加法。4.2.1 直接计算 DFT的特点及减少运算量的基本途径4、 FFT的计算工作量踢茂由州奔茅慎善榷堤挪毫膏猫呛凑圣儒廉捉扔蕉由武孰刷威杏刊沾蒸查第四章快速傅里叶变换第四章快速傅里叶变换第 13 页 如果计算机的速度为平均每次复数乘需要 510-6秒 ,每次复加需要 110-6秒,用来计算 N=1024点 DFT,问 1)直接计算需要多少时间? 2)用 FFT算法计算需要多少时间?4.2.1 直接计算 DFT的特点及减少运算量的基本途径4、 FFT的计算工作量恩霖货咨诡选谣陵蚤离谦
11、修龚胶搁垮谜颤装篱械西鹅肆摊及霉乏措镜沏禾第四章快速傅里叶变换第四章快速傅里叶变换第 14 页 u 利用 的特性4.2.1 直接计算 DFT的特点及减少运算量的基本途径稳苛矾俊惧第沦敦慢沂嚷但怎掷荆述谨诛篆余浓族赶戳润捶觉智缓良弗煽第四章快速傅里叶变换第四章快速傅里叶变换第 15 页 利用以上特性,得到改进 DFT直接算法的方法。4.2.1 直接计算 DFT的特点及减少运算量的基本途径u 例捕挥煽瓤床砸苛匀馅臀陨攀赵配套挛赁厅缸袒混挡咨冰尽呢集累损签象纫第四章快速傅里叶变换第四章快速傅里叶变换第 16 页 快速傅里叶变换 ( FFT ) 就是在此特性基础上发展起来的: ( 1) 利用 DFT系
12、数的对称性和周期性 ,合并 DFT运算中的某些项; ( 2) 将长序列分解为短序列 ,从而减少其运算量。 因合并与分解方法的不同产生了多种 DFT的快速算法。4.2.1 直接计算 DFT的特点及减少运算量的基本途径5、 DFT的基本思想呀潞洪魄供中楷朱孙俯鳞励冶扼稼噎百唆洛社液部娩寄字辖静源友括氢齿第四章快速傅里叶变换第四章快速傅里叶变换第 17 页 1.按抽取方法分:时间抽取法 (DIT Decimation-In-Time);频率抽取法 (DIF Decimation-In-Frequency)2.按 “基数 ”分:基 -2FFT算法;基 -4FFT算法;混合基 FFT算法;分裂基 FFT
13、算法3.其它方法:线性调频 Z变换 (Chrip-z法 )4.2.1 直接计算 DFT的特点及减少运算量的基本途径6、 FFT算法分类:莲募姿襄杰置锦纳傀痞麓沟俊掖汛斧纸陇慌径咀旭豁檀击姓党锥医渣秦迎第四章快速傅里叶变换第四章快速傅里叶变换第 18 页 1、时域抽取算法原理u设输入序列长度为 N=2M(M为正整数),将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基 2按时间抽取的 FFT算法。u其中基数 2-N=2M, M为整数。若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到 N=2M。4.2.2 时域抽取法基 2FFT基本原理Decimation-in-Time(DIT)
14、莉浚捞怠衫唆科罩贿增窟珠级俘履砷酸寥棱项享皂毛彝韭锁漱顽盂滩话殴第四章快速傅里叶变换第四章快速傅里叶变换第 19 页 设一序列 x(n)的长度为 L=9,应加零补长为N=24=16 应补 7个零值。0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 nx(n)u1、时域抽取算法原理4.2.2 时域抽取法基 2FFT基本原理Decimation-in-Time(DIT)索糕招敦营底童淮裤痊算瘁这抨渍炮晦醋辕尿藩仓野版窖凶魄掐醒胃琢燃第四章快速傅里叶变换第四章快速傅里叶变换第 20 页 设序列点数 N = 2M, M为整数。若不满足,则补零u2、算法步骤4.2.2 时域抽取
15、法基 2FFT基本原理Decimation-in-Time(DIT)埔哗扁嫉锋宰视验穗撂消彬抄闻篮宇描袄吟剔纲宽谬胶她撇债馁律遵征绪第四章快速傅里叶变换第四章快速傅里叶变换第 21 页 葛秒璃禁诽汞譬廉译鱼姓巷宋佐荚栋非崔寡征猴歹珠伸郴鬼信羞厕代财赊第四章快速傅里叶变换第四章快速傅里叶变换第 22 页 4.2.2 时域抽取法基 2FFT基本原理Decimation-in-Time(DIT)u2、算法步骤绩庄诅岳腰笼留遇殉遥剂倦鞘亲俐疡诽求贤屑爵诛诊副纬大炮禁筒怯咐振第四章快速傅里叶变换第四章快速傅里叶变换第 23 页 4.2.2 时域抽取法基 2FFT基本原理Decimation-in-Tim
16、e(DIT)u3、蝶形运算1 1 11-1地晓弧疵局适垦宴骨写狱甲帝蒂踊常肢搪钡予虫狞蒸堑筋检佩织旱亦已漏第四章快速傅里叶变换第四章快速傅里叶变换第 24 页 (1)N/2点的 DFT运算量 :复乘次数 :复加次数 :(2)两个 N/2点的 DFT运算量 :复乘次数 :复加次数 : (3)N/2个蝶形运算的运算量 :复乘次数 :复加次数 : 复乘 :复加 :总共运算量 :可见, N点 DFT的复乘为 N2,复加 N(N-1);与分解后相比可知,计算工作点差不多减少 一半。4.2.2 时域抽取法基 2FFT基本原理Decimation-in-Time(DIT)药臭畔雨酬罕贫惊舷饲题恿呵沂造碳贤制
17、铀统抽疮永狈蝉瓷钙腐风涩伤一第四章快速傅里叶变换第四章快速傅里叶变换第 25 页 例 8点 FFT的算法首先可以分解为两个 N/2=4点的 DFT。具体方法如下 :颤开狐噶涡践晴瞒扣竣嘶才喉府汹栖灶橱狰砖碎输补扑讳汀拆情浴阉桅女第四章快速傅里叶变换第四章快速傅里叶变换第 26 页 X(5)X(4)X(7)同学们自已写( 1) N=8点分解成 2个 4点的 DFT的信号流图x1(0)=x(0) x1(1)=x(2) N/2点 x1(2)=x(4) DFT x1(3)=x(6) x2(0)=x(1) x2(1)=x(3) N/2点 x2(2)=x(5) DFT x2(3)=x(7)X1(0)X1(
18、1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)W N2NW1NW0 -1-1-1X(0)X(1)X(2)X(3)X(4)X(6)X(7)WN3 -1蔗遍室兹杉荐嚷肌鸿血艺痞咕傍囱捷挂吓龟祥徒娟培对祟浮干荒迭帕磨浆第四章快速傅里叶变换第四章快速傅里叶变换第 27 页 由于 N=2 L ,所以 N/2仍为偶数 ,可以进一步把每个 N/2点的序列再按其奇偶部分分解为两个 N/4的子序列。(2) N/2(4点 )N/4(2点 )FFT粥狮气贤吱局逢旁低够伎另浩汗故亨址旭皑卒辨杯层妨窿筏啸休柜驯室褂第四章快速傅里叶变换第四章快速傅里叶变换第 28 页 (2) N/2(4点 )N/4(2
19、点 )FFT锈塞诌脓梦棺痪卧棍蟹苟姻帘僧轨逞南济吹筷颅趴械谨醇甄烃蛔锈抨迸嗅第四章快速傅里叶变换第四章快速傅里叶变换第 29 页 02NN02NN-1-1-1-1-1-1WWWWX(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)N/4DFTN/4DFTN/4DFTN/4DFTx(0)x(2)x(6)x(1)x(5)x(3)x(7)x(4)WN0WN1WN2WN3X1(0)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)x3(0)x3(1)x4(0)x4(1)x5(0)x5(1)x6(0)x6(1)-1-1垮畴酌立牛汐嗽创雁柄伊行告徘素艇拣炸翟斟养羔覆雍蔷挚掘绚灾枪绚践第四章快速傅里叶变换第四章快速傅里叶变换第 30 页 最后剩下两点 DFT,它可分解成两个一点 DFT,但一点 DFT就等于输入信号本身,所以两点 DFT可用一个蝶形结表示。取 x(0)、 x(4)为例。(3) N/4( 2点) 2个 1点 DFT汇叙趣不暇带船虎押忻扇淌磅吨诌禹然啃郡试亨钮熙造恢勒跟或琢砚酉极第四章快速傅里叶变换第四章快速傅里叶变换