丁玉美_数字信号处理_第4章__快速傅里叶变换(FFT)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章快速傅里叶变换(FFT)第4章快速傅里叶变换(FFT)4.1引言4.2基2FFT算法4.3进一步减少运算量的措施4.4分裂基FFT算法4.5离散哈特莱变换(DHT)第4章快速傅里叶变换(FFT)4.1引言DFT是信号分析与处理中的一种重要变换。因直接计算DFT的计算量与变换区间长度N的平方成正比,当N较大时,计算量太大,所以在快速傅里叶变换(简称FFT)出现以前,直接用DFT算法进行谱分析和信号的实时处理是不切实际的。直到1965年发现了DFT的一种快速算法以后,情况才发生了根本的变化。第4章快速傅里叶变换(FFT)4.2基2FFT算法4.2.1直接计算DFT的特点及减少运算量的基本途径长度为N的有限长序列x(n)的DFT为考虑x(n)为复数序列的一般情况,对某一个k值,直接按(4.2.1)式计算X(k)值需要N次复数乘法、(N-1)次复数加法。10()(),0,1,,1NknNnXkxnWkN(4.2.1)第4章快速傅里叶变换(FFT)如前所述,N点DFT的复乘次数等于N2。显然,把N点DFT分解为几个较短的DFT,可使乘法次数大大减少。另外,旋转因子WmN具有明显的周期性和对称性。其周期性表现为22()jmlNjmmlNmNNNNWeeW(4.2.2)其对称性表现为2[]mNmNmmNNNNNmmNN或者第4章快速傅里叶变换(FFT)4.2.2时域抽取法基2FFT基本原理FFT算法基本上分为两大类:时域抽取法FFT(DecimationInTimeFFT,简称DIT-FFT)和频域抽取法FFT(DecimationInFrequencyFFT,简称DIF―FFT)。下面先介绍DIF―FFT算法。设序列x(n)的长度为N,且满足2,MNM为自然数按n的奇偶把x(n)分解为两个N/2点的子序列12()(2),0,1,12()(21),0,1,12NxrxrrNxrxrr第4章快速傅里叶变换(FFT)则x(n)的DFT为/21/212(21)00/21/2121200()()()(2)(21)()()knknNNnnNNkrkrNNrrNNkkrNNrrXkxnWxnWxrWxrWxrWxrW由于222222/2jkrNjkrkrkrNNNWeeW所以/21/211/22/21200()()()()()NNkrkkrkNNNNrrXkxrWWxrWXkWXk第4章快速傅里叶变换(FFT)其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT,即/2111/210/2122/220()()[()]()()[()]NkrNrNkrNrXkxrWDFTxrXkxrWDFTxr(4.2.5)(4.2.6)由于X1(k)和X2(k)均以N/2为周期,且,所以X(k)又可表示为2NkkNNWW1212()()()0,1,12()()()0,1,122kNkNNXkXkWXkkNNXkXkWXkk(4.2.7)(4.2.8)第4章快速傅里叶变换(FFT)图4.2.1蝶形运算符号CABA+BCA-BC第4章快速傅里叶变换(FFT)图4.2.2N点DFT的一次时域抽取分解图(N=8)N/2点DFTWN0N/2点DFTWN1WN2WN3x(0)X1(0)x(2)x(4)x(6)x(1)x(3)x(5)x(7)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)第4章快速傅里叶变换(FFT)与第一次分解相同,将x1(r)按奇偶分解成两个N/4长的子序列x3(l)和x4(l),即3241()(2),0,1,,1()(21)4xlxlNlxlxl那么,X1(k)又可表示为/41/412(21)11/21/200/41/413/4/24/4003/24()(2)(21)()()()(),0,1,/21NNklklNNiiNNklkklNNNiikNXkxlWxlWxlWWxlWxkWXkkN(4.2.9)第4章快速傅里叶变换(FFT)式中/4133/430/4144/440()()[()]()()[()]NklNiNklNixkxlWDFTxlxkxlWDFTxl同理,由X3(k)和X4(k)的周期性和WmN/2的对称性Wk+N/4N/2=-WkN/2最后得到:13/2413/24()()(),0,1,,/41(/4)()()kNkNXkXkWXkkNXkNXkWXk(4.2.10)第4章快速傅里叶变换(FFT)用同样的方法可计算出25/2625/26()()(),0,1,/41(/4)()kNkNXkXkWXkkNXkNXkWXk(4.2.11)其中/4155/450/4166/4605262()()[()]()()[()]()(2),0,1,/41()(21)NklNiNklNiXkxlWDFTxlXkxlWDFTxlxlxllNxlxl第4章快速傅里叶变换(FFT)图4.2.3N点DFT的第二次时域抽取分解图(N=8)N/4点DFTWN12WN12WN0WN1WN2WN3X1(0)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)x(0)X3(0)X3(1)X4(0)X4(1)x(4)x(2)x(6)x(1)x(5)x(3)x(7)N/4点DFTN/4点DFTN/4点DFTWN02WN02第4章快速傅里叶变换(FFT)图4.2.4N点DIT―FFT运算流图(N=8)WN0WN1WN2WN3WN0WN2WN0WN2WN0WN0WN0WN0x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(0)A(7)X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)第4章快速傅里叶变换(FFT)4.2.3DIT―FFT算法与直接计算DFT运算量的比较每一级运算都需要N/2次复数乘和N次复数加(每个蝶形需要两次复数加法)。所以,M级运算总共需要的复数乘次数为22(2)log22(2)logMANNCMNCNMNN复数加次数为例如,N=210=1024时221048576204.8(/2)log5120NNN第4章快速傅里叶变换(FFT)图4.2.5FFT算法与直接计算DFT所需乘法次数的比较曲线第4章快速傅里叶变换(FFT)4.2.4DIT―FFT的运算规律及编程思想1.原位计算由图4.2.4可以看出,DIT―FFT的运算过程很有规律。N=2M点的FFT共进行M级运算,每级由N/2个蝶形运算组成。2.旋转因子的变化规律如上所述,N点DIT―FFT运算流图中,每级都有N/2个蝶形。每个蝶形都要乘以因子WpN,称其为旋转因子,p称为旋转因子的指数。第4章快速傅里叶变换(FFT)观察图4.2.4不难发现,第L级共有2L-1个不同的旋转因子。N=23=8时的各级旋转因子表示如下:L=1时,WpN=WJN/4=WJ2L,J=0L=2时,WpN=WJN/2=WJ2L,J=0,1L=3时,WpN=WJN=WJ2L,J=0,1,2,3对N=2M的一般情况,第L级的旋转因子为12212,0,1,2,,212222,0,1,2,,212MLLMpJLNLMLMLMPJJLNNNMLWWLJN(4.2.12)(4.2.13)第4章快速傅里叶变换(FFT)3.蝶形运算规律设序列x(n)经时域抽选(倒序)后,存入数组X中。如果蝶形运算的两个输入数据相距B个点,应用原位计算,则蝶形运算可表示成如下形式:X(J)XL-1(J)+XL-1(J+B)WpNXL(J+B)XL-1(J)-XL-1(J+B)WpN式中p=J·2M-L;J=0,1,…,2L-1-1;L=1,2,…,M第4章快速傅里叶变换(FFT)下标L表示第L级运算,XL(J)则表示第L级运算后数组元素X(J)的值。如果要用实数运算完成上述蝶形运算,可按下面的算法进行。设T=XL-1(J+B)WpN=TR+jTIXL-1(J)=X′R(J)+jX′I(J)式中下标R表示取实部,I表示取虚部,22()cos()sin22()cos()sinRRRIIIRITXJBpXJBpNNTXJBpXJBpNN第4章快速傅里叶变换(FFT)()()()()()()()()()()()LRRRRIIIRRRIIIXJXJjJXJXJTXJXJTXJBXJTXJBXJT则第4章快速傅里叶变换(FFT)4.编程思想及程序框图图4.2.6DIT―FFT运算和程序框图开始送入x(n),MN=2M倒序L=1,MJ=0,B-1P=2M-LJk=J,N-1,2LpNpNWBkXkXBkXWBkXkXkX)()()()()()(输出结束B2L-1第4章快速傅里叶变换(FFT)5.序列的倒序DIT―FFT算法的输入序列的排序看起来似乎很乱,但仔细分析就会发现这种倒序是很有规律的。由于N=2M,所以顺序数可用M位二进制数(nM-1nM-2…n1n0)表示。图4.2.7形成倒序的树状图(N=23)01010101010101(n2n1n0)200004261537100010110001101011111第4章快速傅里叶变换(FFT)表4.2.1顺序和倒序二进制数对照表第4章快速傅里叶变换(FFT)图4.2.8倒序规律x(0)x(1)x(2)x(3)x(4)x(5)x(6)x(7)A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)A(0)A(1)A(2)A(3)A(4)A(5)A(6)A(7)x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)第4章快速傅里叶变换(FFT)图4.2.9倒序程序框图221NNLHJNLHI=1,N1I≥JTJAJXIAIXT)()()()(J<KLHKKJJ2KKKJJYNNY第4章快速傅里叶变换(FFT)4.2.5频域抽取法FFT(DIF―FFT)在基2快速算法中,频域抽取法FFT也是一种常用的快速算法,简称DIF―FFT。设序列x(n)长度为N=2M,首先将x(n)前后对半分开,得到两个子序列,其DFT可表示为如下形式:10/2110/2/21/21(/2)00/21/20()[()]()()()()()2[()()]2NkNnNNknknNNnnNNNknknNNNnnNkNknNNnXkDFTxnxnWxnWxnWNxnWxnWNxnWxnW第4章快速傅里叶变换(FFT)/21,(1)1kNkNkWk偶数奇数将X(k)分解成偶数组与奇数组,当k取偶数(k=2r,r=0,1,…,N/2-1)时/2120/212/20(2)[()()]2[()()]2NrnNnNrnNnNXrxnxnWNxnxnW(4.2.14)第4章快速傅里叶变换(FFT)当k取奇数(k=2r+1,r=0,1,…,N/2-1)时/21(21)0/21/20(21)[()()]2[()()]2NnrNnNnnrNNnNXrxnx

1 / 89
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功