您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 第三章离散傅里叶变换和快速付里叶变换FFT2.
3.4快速傅立叶变换FFT产生1965年,库利--图基在《计算数学》(MathematicofComputation)杂志上发表了著名的“机器计算傅里级数的一种算法”文章,提出一种快速计算DFT的方法和计算机程序--揭开了FFT发展史上的第一页。本节主要内容•直接计算DFT算法存在的问题及改进途径。•FFT算法(基-2时间抽取算法)•FFT的应用1.直接计算DFT计算量问题提出:设有限长序列x(n),非零值长度为N,计算对x(n)进行一次DFT运算,共需多大的运算工作量?一、直接计算DFT算法存在的问题及改进途径(1)以DFT为例,计算DFT复数运算量计算一个X(k)(一个频率成分)值,运算量为例k=1则要进行N次复数乘法+(N-1)次复数加法所以,要完成整个DFT运算,其计算量为:N*N次复数相乘+N*(N-1)次复数加法10)()1(NnnNWnxX(2)一次复数乘法换算成实数运算量复数运算要比加法运算复杂,需要的运算时间长。一个复数乘法包括4个实数乘法和2个实数相法。(a+jb)(c+jd)=(ac-bd)+j(bc+ad)4次实数乘法2次实数加法(3)计算DFT需要的实数运算量每运算一个X(k)的值,需要进行4N次实数相乘和2N+2(N-1)=2(2N-1)次实数相加.整个DFT运算量为:4N2次实数相乘和2N(2N-1)次实数相加.由此看出:直接计算DFT时,乘法次数与加法次数都是和N2成比例的。当N很大时,所需工作量非常可观。])}Re[)](Im[]Im[)((Re[)]Im[)](Im[]Re[)]({(Re[)(10knNknNNnknNknNWnxWnxjWnxWnxkX当N=1024点时,直接计算DFT需要:N2=220=1048576次,即一百多万次的复乘运算。这对实时性很强的信号处理(如雷达信号处理)来讲,它对计算速度有十分苛刻的要求迫切需要改进DFT的计算方法,以减少总的运算次数。(4)比较DFT与IDFT之间的运算量10)()()(NnknNDFTWnxkXnx1,1,0Nk10)()()(NkknNIDFTWkXnxkX1,1,0Nn其中x(n)为复数,也为复数所以DFT与IDFT二者计算量相同。knNjknNeW22.改善DFT运算效率的基本途径利用DFT运算的系数的固有对称性和周期性,改善DFT的运算效率。•合并法:合并DFT运算中的某些项。•分解法:将长序列DFT利用对称性和周期性,分解为短序列DFT。knNW利用DFT运算的系数的固有对称性和周期性,改善DFT的运算效率knNWknNW的对称性:nkNknNWW*)(knNW的周期性:)()(kNnNkNnNknN1)()(22kjkNNjkNNeeW因为:1,1,0Nk1)()(22njNnNjNnNeeW1,1,0Nn由此可得出:nkNknNNkNnN)()()(1sincos)(222/jeWNNjNNkNNkNWW)(2;1,120NNNWW;,2rNrNNrNrNN例:1454)54(4941898178258利用以上特性,得到改进DFT直接算法的方法.将长序的DFT利用对称性和周期性分解为短序列DFTDFT的运算量与N2成正比如果一个大点数N的DFT能分解为若干小点数DFT的组合,则显然可以达到减少运算工作量的效果。方法22)()()(NNNkXkXkX把N点数据分成二半:其运算量为:2)2(N2)2(N2N再分二半:44)()(NNkXkX44)()(NNkXkX+=22N2)4(N2)4(N2)4(N2)4(N+++=24N这样一直分下去,剩下两点的变换。结论快速付里时变换(FFT)就是在此特性基础上发展起来的,并产生了多种FFT算法,其基本上可分成两大类:按抽取方法分:时间抽取法(DIT);频率抽取法(DIF)按“基数”分:基-2FFT算法;基-4FFT算法;混合基FFT算法;分裂基FFT算法其它方法:线性调频Z变换(CZT法)二、基--2按时间抽取的FFT算法Decimation-in-Time(DIT)1算法原理设输入序列长度为N=2M(M为正整数,将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基2按时间抽取的FFT算法。也称为Coolkey-Tukey算法。其中基数2----N=2M,M为整数。若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到N=2M。例子设一序列x(n)的长度为L=9,应加零补长为N=24=16应补7个零值。0123456789101112131415nx(n)2算法推导(1)分组DFT变换:10)()(NnknNWnxkX1,,0Nk先将x(n)按n的奇偶分为两组,作变量置换:当n=偶数时,令n=2r;当n=奇数时,令n=2r+1;得到:x(2r)=x1(r);x(2r+1)=x2(r);r=0,…,N/2-1;(2)代入DFT中)(2)(1)12()2()()rxDFTrxDFTrxDFTrxDFTnxDFTkX(12/,,0Nr生成两个子序列x(0),x(2)…x(2r)奇数点x(1),x(3)…x(2r+1)偶数点代入DFT变换式:2/2/2222212/012/02)12(12/012/02)()(2))((1)12()2()NNjNjNkNrkNNrNrrkNkrNNrNrrkNWee((3)求出子序列的DFT上式得:12/012/02/2/2212/012/02/2/11212/12/0212/02/1)12()()()2()()(12/1,0)()()()()NrNrrkNrkNNrNrrkNrkNkNkNrkNNrNrrkNWrxWrxkXWrxWrxkXNkkXWkXWWrxWrxkX其中:(12/,,0Nk(4)结论1一个N点的DFT被分解为两个N/2点DFT。X1(k),X2(k)这两个N/2点的DFT按照:12/1,0)()()21NkDFTNkXWkXkXkN中的前半部分点又合成(再应用W系数的周期性,求出用X1(k),X2(k)表达的后半部的X(k+N/2)的值。(5)求出后半部的表示式12/012/022/2)2/(2/2212/012/012/1)2/(2/11)2/(2/2/)()()()2()()()()2(NrNrrkNkNrNNrNrrkNkNrNNkrNrkNkXWrxWrxkNXkXWrxWrxkNXWW后半部的k值所对应的X1(k),X2(k)则完全重复了前半部分的k值所对应的X1(k),X2(k)的值。)()()(212/)2/kXWkXkX后半部分:又((6)结论2频域中的N个点频率成分为:)()()2/()()()(2121kXWkXNkXkXWkXkXkNkN后半部分:前半部分:结论:只要求出(0~N/2-1)区间内的各个整数k值所对应的X1(k),X2(k)值,即可以求出(0~N-1)整个区间内全部X(k)值,这就是FFT能大量节省计算的关键。(7)结论3•由于N=2M,因此N/2仍为偶数,可以依照上面方法进一步把每个N/2点子序列,再按输入n的奇偶分解为两个N/4点的子序列,按这种方法不断划分下去,直到最后剩下的是2点DFT,两点DFT实际上只是加减运算。3蝶形结(基本单元)即蝶式计算结构也即为蝶式信号流图上面频域中前/后半部分表示式可以用蝶形信号流图表示。X1(k)X2(k)kNW)()(21kXWkXkN)()(21kXWkXkN将N=8点分解成2个4点的DFT的信号流图3821282118210821)3()3(3)2()2(2)1()1(1)0()0(0WXXXWXXXWXXXWXXX)()()()(如:4点DFTx(0)x(2)x(4)x(6)4点DFTx(1)x(3)x(5)x(7)08W18W28W38WX(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)X1(0)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)偶数序列奇数序列x1(r)x2(r)一个2点的DFT蝶形流图2点DFT2点DFTx(0)x(4)x(2)x(6)X3(0)X3(1)X4(0)X4(1)X1(0)X1(1)X1(2)X1(3)04W14W)1()1()3()0()0()2()1()1()1()0()0()0(41431404314143140431XWXXXWXXXWXXXWXX其中另一个2点的DFT蝶形流图)1()1()3()0()0()2()1()1()1()0()0()0(61452604526145260452XWXXXWXXXWXXXWXX其中2点DFT2点DFTx(1)x(5)x(3)x(7)X5(0)X5(1)X6(0)X6(1)X2(0)X2(1)X2(2)X2(3)04W14W同理:将N/4(2点)DFT再分解成2个1点的DFT0210221202123020231021,0;1,0)4()0()4()0()1()4()0()4()0()0()()(2WWkn,其中,则这里用到对称性这是一蝶形结代入上面流图可知:最后剩下两点DFT,它可分解成两个一点DFT,但一点DFT就等于输入信号本身,所以两点DFT可用一个蝶形结表示。取x(0)、x(4)为例。2个1点的DFT蝶形流图1点DFTx(0)1点DFTx(4)X3(0)X3(1)02W进一步简化为蝶形流图:02WX3(0)X3(1)x(0)x(4))4()0()4()0()1()4()0()4()0()0(023023xxxWxXxxxWxX其中:一个完整N=8的按时间抽取FFT的运算流图12/0NNNWW其中蝶形因子,共有X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)38W28W18W08W08W08W08W08W08W08W28W28Wm=1m=2m=34FFT算法中一些概念将N点DFT先分成两个N/2点DFT,再是四个N/4点DFT…直至N/2个两点DFT.每分一次称为“一”级运算。因为N=2M所以N点DFT可分成M级如上图所示依次m=1,m=2….M共M级(1)级(2)组每一级都有N/2个蝶形单元,例如:N=8,则每级都有4个蝶形单元。每一级的N/2个蝶形单元可以分成若干组,每一组具有相同的结构,相同的因子分布,第m级的组数为:rNWmN2例:N=8=23,分3级。m=1级,分成四组,每组系数为m=2级,分成二组,每组系数为m=3级,分成一组,每组系数为080204/28082012/02/,,,382818083210,,,,,,(3)因子的分布rNW121,0,,3,2,10310201238281808828081404408022mkkkkkWm级的系数为看出:第,,,级,,,,级,级,由上可知:结论:每由后向前(m由M--1级)推进一级,则此系数为后级系数中偶数序号的那一半。N=8点和N=1024点时直接计算DFT与用基2-按时间抽取
本文标题:第三章离散傅里叶变换和快速付里叶变换FFT2.
链接地址:https://www.777doc.com/doc-2121949 .html