按时间抽取的基2FFT算法分析报告_第1页
按时间抽取的基2FFT算法分析报告_第2页
按时间抽取的基2FFT算法分析报告_第3页
免费预览已结束,剩余13页可下载查看

下载本文档

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

文档简介

1、第四章 快速傅里叶变换有限长序列可以通过离散傅里叶变换(DFT) 将其频域也离散化成有限长序列 .但其计算量太大 ,很难实时地处理问题,因此引出了快速傅里叶变换(FFT). 1965 年, Cooley 和 Tukey 提出了计算离散傅里叶变换( DFT )的快 速算法,将 DFT 的运算量减少了几个数量级。 从此,对快速傅里叶变换 ( FFT) 算法的研究便不断深入,数字信号处理这门新兴学科也随 FFT 的出现和发 展而迅速发展。根据对序列分解与选取方法的不同而产生了 FFT 的多种算 法,基本算法是基2 DIT和基2 DIF。 FFT在离散傅里叶反变换、线性卷积 和线性相关等方面也有重要应

2、用。快速傅里叶变换(FFT)是计算离散傅里叶变换(DFT )的快速算法。DFT 的定义式为N1knX(k) =x(n)WNknRN (k)n0在所有复指数值 wNn的值全部已算好的情况下,要计算一个X(k)需要N次复数乘法和N 1次复数加法。算出全部 N点X(k)共需N 2次复数乘法 和N(N 1)次复数加法。即计算量是与 N2成正比的。FFT 的基本思想:将大点数的 DFT 分解为若干个小点数 DFT 的组合, 从而减少运算量。WN 因子具有以下两个特性, 可使 DFT 运算量尽量分解为小点数的 DFT 运算:( 1 )周期性: WN(k N )n WNkn WN(n N)k( 2)对称性:

3、 WN(k N /2)WNk利用这两个性质,可以使 DFT运算中有些项合并,以减少乘法次数。例子:求当N = 4时,X(2)的值3X(2)x( n)W42n x(O)W:x(1)W42x(2)W44x(3)w44n 0x(0) x(2)W40x(1)x(3)W42(周期性)= x(0) x(2)-x(1) x(3)W40(对称性)通过合并,使乘法次数由4次减少到1次,运算量减少。FFT的算法形式有很多种,但基本上可以分为两大类:按时间抽取(DIT )和按频率抽取(DIF )。4.1按时间抽取(DIT )的FTT为了将大点数的 DFT分解为小点数的 DFT运算,要求序列的长度 N为 复合数,最常

4、用的是 N 2M的情况(M为正整数)。该情况下的变换称为 基2FFT。下面讨论基2情况的算法。先将序列x(n)按奇偶项分解为两组x(2r)Xi(r)x(2r 1) x2 (r)r 0,1, ,- 12将DFT运算也相应分为两组N 1 knX(k) DFTx( n)x(n)Wzn 0N 1N 1x( n)WNkn+x( n)W,nn 0n 0n为偶数n为奇数N /2 12 rk=x(2)WnN /2 1x(2r 1)WN(2r 1)k2rkXi(JWnr 02rkWnX2 (r )Vnr 0N /2 1 rkXi()Wn/2N /2 1 rkWnX2()Wn/2r 0個为 W(rkWn"

5、;/2 )kX“(k) WNX2(k)其中X,k)、X2(k)分别是 x,n)、x2(n)的 N/2 点的 DFTN /2 1 rkX1(k) =X1(r)WN/2r 0N /2 1rkX2(k) =X2()Wn/2r 0至此,一个N点DFT被分解为两个N /2 1 rkNx(2r)WN/2,0k1r 02x(2r 1)W,/2,0 k N 1r 02N/2 点的 DFT。上面是否将全部 N点的X(k)求解出来了?N分析:Xdk)和X2(k)只有N/2个点(k 0,1,21),则由kX(k) X1(k) WzX2(k)只能求出X(k)的前N/2个点的DFT,要求出全部N点的X(k),需要找出X

6、,k)、X2(k)和X(k N/2)的关系,其中 k 0,1, ,N 1。由式子 X(k) X,k) W,X2(k)可得2X(k N/2) X1(k N/2) W, N/2X2(k N / 2)化简得kNX(k N /2) = Xdk) WzX2(k) , k 0,1,12这样N点DFT可全部由下式确定出来:0,1,严)X(k) Xdk) W,X2(k)kX(k N/2) X1(k) WNX2(k)上式可用一个专用的碟形符号来表示,这个符号对应一次复乘和两次复加运算。kW“b图蝶形运算符号kWzb通过这样的分解以后,每一个2N 2 N 2N/2点的DFT只需要(一)2次复数乘24法,两个 N/

7、2点的DFT需要2N 2 N22()2次复乘,再加上将两个N/2点2 2DFT合并成为 N点DFT时有N / 2次与 W因子相乘,一共需要N2N 次复乘。可见,通过这样的分解,运算量节省了近一半。2 2因为N2M,N/2仍然是偶数,因此可以对两个 N/2点的DFT再分别作进一步的分解,将两个 N/2点的DFT分解成两个N/4点的DFT。例如对xdr),可以在按其偶数部分及奇数部分进行分解:xi(2l)X3(l)Xi(2l1)X4(l)0,1,冲 1N /4 12lkX1(k) =X1(2I)Wn/2l 0N /4 1xi(2l1)wN2l21)kl 0则的运算可相应分为两组:N /4 1 lk

8、=X3(I)Wn/4l 0N /4 1kikWn/2X4(I)Wn/4l 0kNX3(k) WN/2X4(k) k 01,1将系数统一为以N为周期,即W,/2WN,可得2 kXi(k)X3(k) Wn X4(k)N2kk 0,1, 1Xi(k N /4) X3(k) Wn X4(k)4同样,对X2(k)也可进行类似的分解。一直分解下去,最后是2点的3DFT, 2点DFT的运算也可用碟形符号来表示。这样,对于一个N 28的DFT运算,其按时间抽取的分解过程及完整流图如下图所示。xxxx xxxx(n)同罔问11 5)3)p)2占DFT& 00 OQ-4e e 0 b OIOII-&

9、;0800 & Q &xlsrxMXxxx2)_31町可切n这种方法,由于每一步分解都是按输入序列在时域上的次序是属于偶数还是奇数来抽取的,故称为“时间抽取法”。分析上面的流图,N 2M,一共要进行 M次分解,构成了从 x(n)到X(k)的M级运算过程。每一级运算都是由N/2个蝶形运算构成,因此每一级运算都需要 N/2次复乘和N次复加,则按时间抽取的M级运算后总共需复数乘法次数: mF M N log2 NF 2 2 U2复数加法次数:aF N M N |og2 N根据上面的流图,分析FFT算法的两个特点,它们对FFT的软硬件构成产生很大的影响。(1) 原位运算也称为同址运算,

10、当数据输入到存储器中以后,每一级运算的结果仍然存储 在原来的存储器中, 直到最后输出,中间无需其它的存储器。 根据运算流图 分析原位运算是如何进行的。原位运算的结构可以节省存储单元,降低设备成本。(2) 变址分析运算流图中的输入输出序列的顺序,输出按顺序,输入是“码位倒置” 的顺序。见图。自然顺序进制表示码位倒置码位倒置顺序0000000010011004223011110641000011510110156110011371111117码位倒置顺序X(0)X(7)码位倒置的变址处理在实际运算中,直接将输入数据 x(n)按码位倒置的顺序排好输入很不 方便,一般总是先按自然顺序输入存储单元,然后

11、通过变址运算将自然顺序的存储换成码位倒置顺序的存储,这样就可以进行FFT的原位运算。变质的功能如图所示。用软件实现是通用采用雷德(Rader)算法,算出I的倒序J以后立即将输入数据X(I)和X(J)对换。尽管变址运算所占运算量的比例很小,但对某些高要求的应用(尤其在实时信号处理中),也可设法用适当的电路结构直接实现变址。例如单片数字信号处理器 TMS320C25就有专用 于FFT的二进制码变址模式。4. 2按频率抽取(DIF )的FTT除时间抽取法外,另外一种普遍使用的FFT结构是频率抽取法。频率抽取法将输入序列不是按奇、偶分组,而是将N点DFT写成前后两部分:N 1 knX(k) DFTx(

12、 n)x(n)WNn 0(N/2) 1N 1knknx(n)Wz +x(n)Wzn 0n N/2N /2 1=x( n)W0n 0N /2 1x(n N /2)WN(n N/2)kn 0N /2 1=x( n) wNN/2沐 x( n N/2)W0因为wNN/2i,wNN/2)k( i)k, k为偶数时(i)k i, k为奇数时(1)k 1,由此可将X(k)分解为偶数组和奇数组:N /2 1X(k)=x( n) ( 1)kx( n N/2)Wkn 0N/2 12nrX(2r)=x(n) x(n N /2)Wnn 0N /2 1x( n) x(n N/2)WN:2n 0N /2 1X(2r 1)

13、=x(n) x(n N/2)wN"小n 0N /2 1x( n) x(n N/2)WN>N;r/2n 0n 0,1,N/21令 x1(n) x(n) x(n N/2)x2(n) x(n) x(n N/2)W这两个序列都是 N/2点的序列,对应的是两个N/2点的DFT运算:N/2 1nrX(2r)=X1(n) Wn/2n 0N /2 1rnX(2r 1)=X2(n)W/2n 0这样,同样是将一个 N点的DFT分解为两个N/2点的DFT 了。频率抽选法 对应的碟形运算关系图如下:对于N=8时频率抽取法的 FFT流图如下:OQOOC占 Q 口 *1- *1* 1- o 1 2 3 J

14、- 5 6 7 I-I uilJP xxxx XXX点FT2 D点FT2D点FT z D点FT2D卩4医伍.卩宙07) XIXI旳x(x(xxx(IOJ1 )21可叫5J6J7) fl> n H_ n xxxxxxxxo 4o_IJ 0 4 2 6 15 3 7 卅应旳斤XI用x(x(oo0'c殆o o -1* *-14 4-14 *-1这种分组的办法由于每次都是按输出X(k)在频域的顺序上是属于偶数还是奇数来分组的,称为频率抽取法。与前面按时间抽取的方法相比,相同点 问题:如何利用快速算法计算IDFT ?分析IDFT的公式:1 N 1x(n) IDFT X(k) 丄X(k)WN

15、nk,n 0,1, N 1N k o比较DFT的公式:N 1X(k) DFT x(n)x(n)Wk,k 0,1, , N 1n 0得知可用两种方法来实现IDFT的快速算法:(1)只要把DFT运算中的每1一个系数 W该为wNnk,并且最后再乘以常数,就可以用时间抽取法N或频率抽取的FFT算法来直接计算IDFT o这种方法需要对 FFT的程序和参数稍加改动才能实现。 (2) 因为1 N 1 * nk * 1 *x(n) X (k)WN DFTX (k), n 0,1, ,N 1,也就 N k oN是说,可先将 X(k)取共轭变换,即将 X(k)的虚部乘以1,就可直接调用 FFT的程序,最后再对运算

16、结果取一次共轭变换并乘以常数1/N即可得到x(n)的值。这种方法中,FFT运算和IFFT运算都可以共用一个子程序块, 在使用通用计算机或用硬件实现时比较方便。混合基FFT算法以上讨论的是基2的FFT算法,即N 2M的情况,这种情况实际 上使用得最多,这种 FFT运算,程序简单,效率很高,用起来很方便。另 外,在实际应用时,有限长序列的长度N到底是多少在很大程度时是由人为因素确定的,因此,大多数场合人们可以将N选定为N 2M,从而可以直接调用以2为基数的FFT运算程序。如果长度N不能认为确定,而 N的数值又不是以2为基数的整数次 方,一般可有以下两种处理方法:(1) 将x(n)用补零的方法延长,

17、使N增长到最邻近的一个N 2M数值。例如,N=30,可以在序列x(n)中补进x(30) = x(31)=0两个零值点, 使N=32。如果计算FFT的目的是为了了解整 个频谱,而不是特定频率点,则此法可行。因为有限长序列补 零以后并不影响其频谱X (ejw ),只是频谱的采样点数增加而已。(2) 如果要求特定频率点的频谱,则N不能改变。如果 N为复合数,则可以用以任意数为基数的 FFT 算法来计算。 快速傅里叶变换的基本思想就是要将 DFT 的运算尽量分小。例如, N=6 时,可以按照N=3 X2分解,将6点 DFT分解为3组2点 DFT。举例: N=9 时的快速算法。4.2 快速傅里叶变换的应

18、用凡是可以利用傅里叶变换来进行分析、 综合、 变换的地方, 都可以利 用 FFT 算法及运用数字计算技术加以实现。 FFT 在数字通信、语音信号处 理、图像处理、匹配滤波以及功率谱估计、仿真、系统分析等各个领域都得 到了广泛的应用。但不管 FFT 在哪里应用,一般都以卷积积分或相关积分 的具体处理为依据,或者以用 FFT 作为连续傅里叶变换的近似为基础。利用 FFT 求线性卷积快速卷积在实际中常常遇到要求两个序列的线性卷积。 如一个信号序列 x(n) 通过FIR滤波器时,其输出 y(n)应是x(n)与h(n)的卷积:y(n) x(n) h(n) x(m)h(n m)m有限长序列x(n)与h(n

19、)的卷积的结果y(n)也是一个有限长序列。假设 x(n)与 h(n)的长度分别为 N1和N2,贝U y(n)的长度为N=N1+N2-1。若通过补零使 x(n)与h(n)都加长到N点,就可以用圆周卷积来计算线性卷积。这样得到用 FFT运算来求y(n)值(快速卷积)的步骤如下:(1) 对序列x(n)与 h( n)补零至长为 N ,使 N > N1+N2-1 ,并且N 2M (M为整数),即x(n), n 0,1, ,N1 1x(n)0, n N1,N1 1, ,N 1h(n), n 0,1, ,N2 1h(n)0, n N2,N2 1, ,N 1(2) 用FFT计算x(n)与h(n)的离散傅

20、里叶变换x(n) (FFT)X(k)(N 点)h(n) (FFT)H(k)(N 点)(3) 计算 Y(k)=X(k)H(k)(4) 用IFFT计算Y(k)的离散傅里叶反变换得:y(n)=IFFTY(k)(N点)4.2.2 利用 FFT 求相关快速相关互相关及自相关的运算已广泛的应用于信号分析与统计分析, 应用于连 续时间系统也用于离散事件系统。用 FFT 计算相关函数称为快速相关,它与快速卷积完全类似,不同的 是一个应用离散相关定理, 另一个应用离散卷积定理。 同样都要注意到离散 傅里叶变换固有的周期性,也同样用补零的方法来绕过这个障碍。设两个离散时间信号 x(n)与y(n)为已知,离散互相关

21、函数记作 Rxy (n),定义为Rxy(n)x(m)y(n m)m如果x(n)与y(n)的序列长度分别为 N1和N2,则用FFT求相关的计算步骤 如下:(1 )对序列x(n)与y( n)补零至长为N ,使N > N1+N2-1 ,并且N 2m (M为整数),即x(n)x(n), n0,1, ,N110, nN1,N1 1,N1y(n)y(n), n0,1, ,N210, nN2,N2 1,N1(2)用FFT计算x(n)与y(n)的离散傅里叶变换x(n)(FFT) X(k)( N 点)y(n)(FFT) Y(k)N 点)(3) 将X(k)的虚部lmX(k)改变符号,求得其共轭 X*(k)(4) 计算 Rxy(k)=x*(k)Y(k)(5) 用IFFT求得相关序列Rxy(n)Rxy(n) = IFFT Rxy(k)(n 点)如

温馨提示

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

最新文档

评论

0/150

提交评论