ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:61.55KB ,
资源ID:17647647      下载积分:6 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-17647647.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(详解FFT快速傅里叶变换FFT.docx)为本站会员(b****0)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

详解FFT快速傅里叶变换FFT.docx

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

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

3、+ N ) nN= W kn= W ( n + N ) k(2) 对称性:W ( k + N / 2 ) = W kN N利用这两个性质,可以使 DFT 运算中有些项合并,以减少乘法次数。例子:求当 N4 时,X(2)的值3 4 4 4 4 4X (2) =n =0x(n)W 2 n = x(0)W 0 + x(1)W 2 + x(2)W 4 + x(3)W 6= x(0) + x(2)W 0 + x(1) + x(3)W 2(周期性)44 x(0) + x(2) x(1) + x(3)W 04(对称性)通过合并,使乘法次数由 4 次减少到 1 次,运算量减少。FFT 的算法形式有很多种,但基

4、本上可以分为两大类:按时间抽取(DIT)和按频率抽取(DIF)。4.1 按时间抽取(DIT)的 FTT为了将大点数的 DFT 分解为小点数的 DFT 运算,要求序列的长度 N 为 复合数,最常用的是 N = 2 M 的情况(M 为正整数)。该情况下的变换称为 基 2FFT。下面讨论基 2 情况的算法。先将序列 x(n)按奇偶项分解为两组x(2r ) = x1 (r )x(2r + 1) = x2 (r )将 DFT 运算也相应分为两组Nr = 0,1,L, 2 1N 1NX (k ) = DFT x(n) = x(n)W knn =0N 1= x(n)W knN 1 x(n)W knn=0n为

5、偶数n =0n 为奇数N / 21 (2 )2 rk +N / 21 (2+ 1)( 2 r +1) k xr =0r WNx r WNr =0N / 212 rk +N / 21k 2 rkr =0x1 (r )WNWNkr =0x2 (r )WNrkN / 21 x1 (r )Wr =0N / 2 + WNN / 21 x2 (r )Wr =0rkN / 2(因为W2 rkNrkN / 2k= X 1 (k ) + WN X 2 (k )其中 X 1 (k ) 、 X 2 (k ) 分别是 x1 (n)、x2 (n) 的 N/2 点的 DFTN / 21N / 21rk rkX 1 (k

6、) x1 (r )WN / 2 = x(2r )WN / 2 ,0 k 1r =0r =0 2N / 2 1N / 2 1rkrk NX 2 (k ) x 2 (r )W N / 2 = x(2r + 1)W N / 2 ,0 k 1r =0r =0 2至此,一个 N 点 DFT 被分解为两个 N/2 点的 DFT。上面是否将全部 N 点的 X (k ) 求解出来了?分析: X 1 (k ) 和NX 2 (k ) 只有 N/2 个点( k = 0,1,L,2 1 ),则 由1 N 2X (k ) = X (k ) + W k X (k ) 只能求出 X (k ) 的前 N/2 个点的 DFT,

7、要求出全部 N 点的 X (k ) ,需要找出 X 1 (k ) 、 X 2 (k ) 和 X (k + N / 2) 的关系,其N中 k = 0,1,L, 2 1。由式子 X (k ) = X 1N(k ) + W k X2 (k ) 可得1 NX (k + N / 2) = X (k + N / 2) + W k + N / 2kX 2 (k + N / 2) 化简得NX (k + N / 2) = X 1 (k ) WN X 2 (k ) , k = 0,1,L, 2 1这样 N 点 DFT 可全部由下式确定出来:1 N 2 X (k ) = X (k ) + W k X (k )1 N

8、 2 X (k + N / 2) = X (k ) W k X (k )k = 0,1,L, N 12()上式可用一个专用的碟形符号来表示,这个符号对应一次复乘和两次复加运 算。a a + W k bb a W k b-1N图 蝶形运算符号2通过这样的分解以后,每一个 N2 点的 DFT 只需要 ( N ) 2 = N次复数乘2 42法,两个 N/2 点的 DFT 需要 2( N ) 2 = N次复乘,再加上将两个 N2 点2 2DFT 合并成 为 N 点 DFT 时有 N 2 次与 W 因 子相 乘,一 共需 要2N + N2 2N 2 次复乘。可见,通过这样的分解,运算量节省了近一半。2因

9、为 N = 2 M ,N/2 仍然是偶数,因此可以对两个 N/2 点的 DFT 再分别作进一步的分解,将两个 N/2 点的 DFT 分解成两个 N/4 点的 DFT。例如对 x1 (r) ,可以在按其偶数部分及奇数部分进行分解:x1 (2l ) = x3 (l )x1 (2l + 1) = x4 (l )则的运算可相应分为两组:Nl = 0,1,L, 4 1N / 41X 1 (k ) x1 (2l )Wl =02lkN / 2N / 41+ x1 (2l + 1)Wl =0( 2l +1) kN / 2N / 413 ( ) / 4kN / 2N / 414 ( )lkN / 4 xl =0

10、l WN Wkx l Wl =0N= X 3 (k ) + WN / 2 X 4 (k )N / 2将系数统一为以为周期,即W kk = 0,1,L, 4 1N= W 2 k ,可得1 3 N X (k ) = X (k ) + W 2 kX 4 (k )2 kk = 0,1,L, N 1X 1 (k + N / 4) = X 3 (k ) WNX 4 (k ) 4同样,对 X 2 (k ) 也可进行类似的分解。一直分解下去,最后是点的DFT,点 DFT 的运算也可用碟形符号来表示。这样,对于一个 N = 2 3 = 8的 DFT 运算,其按时间抽取的分解过程及完整流图如下图所示。这种方法,由

11、于每一步分解都是按输入序列在时域上的次序是属于偶数还是奇数来抽取的,故称为“时间抽取法”。分析上面的流图, N = 2 M ,一共要进行 M 次分解,构成了从 x(n)到X(k)的 M 级运算过程。每一级运算都是由 N/2 个蝶形运算构成,因此每一 级运算都需要 N/2 次复乘和 N 次复加,则按时间抽取的 M 级运算后总共需 要复数乘法次数: mF= N M2= N log N2 2复数加法次数: aF= N M = N log 2 N根据上面的流图,分析算法的两个特点,它们对的软硬件构成产生很大的影响。() 原位运算 也称为同址运算,当数据输入到存储器中以后,每一级运算的结果仍然存储 在原

12、来的存储器中,直到最后输出,中间无需其它的存储器。根据运算流图 分析原位运算是如何进行的。原位运算的结构可以节省存储单元,降低设备 成本。() 变址 分析运算流图中的输入输出序列的顺序,输出按顺序,输入是“码位倒置”的顺序。见图。自然顺序二进制表示码位倒置码位倒置顺序0000000010011004201001023011110641000011510110156110011371111117码位倒置顺序0 1 2 3 4 5 6 7X(0) X(4) X(2) X(6) X(1) X(5) X(3) X(7) 码位倒置的变址处理在实际运算中,直接将输入数据 x(n)按码位倒置的顺序排好输入很

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

14、、偶分组,而是将点 DFT 写成前后两部分:N 1NX (k ) = DFT x(n) = x(n)W knn =0( N / 2)1N 1= x(n)W kn x(n)W knn =0N Nn= N / 2N / 21 ( )nk +N / 21 ( +nk/ 2)( n + N / 2) kn =0x n WNx n N WNn=0( N / 2) kN / 21 x(n) + WNx(n + N / 2)WNn =0因为 W N / 2 = 1,W ( N / 2) k= (1) k , k 为 偶数时 (1) k= 1 , k 为奇数时 N N(1) k= 1,由此可将 X(k)分解为

15、偶数组和奇数组:N / 21 NX (k )n =0 x(n) + (1) k x(n + N / 2)W nkN / 21 NX (2r )n=0 x(n) + x(n + N / 2)W 2 nrN / 21N / 2=n =0 x(n) + x(n + N / 2)W nrN / 21 NX (2r + 1)N / 21n =0 x(n) x(n + N / 2)W ( 2 r +1) n N N / 2=Nn =0 x(n) x(n + N / 2)W nW nrx1 (n) = x(n) + x(n + N / 2)令 n = 0,1,L, N / 2 1x2(n) = x(n) x

16、(n + N / 2)W n这两个序列都是 N/2 点的序列,对应的是两个 N/2 点的 DFT 运算:N / 21 1N / 2X (2r )n =0x (n)W nrN / 21 2N / 2X (2r + 1)xn =0(n)W rn这样,同样是将一个 N 点的 DFT 分解为两个 N/2 点的 DFT 了。频率抽选法对应的碟形运算关系图如下:a a + b (a b)W nb Nn-1 WN对于 N=8 时频率抽取法的 FFT 流图如下:这种分组的办法由于每次都是按输出 X(k)在频域的顺序上是属于偶数还是奇数来分组的,称为频率抽取法。与前面按时间抽取的方法相比,相同点 问题:如何利用

17、快速算法计算 IDFT?分析 IDFT 的公式:x(n) = IDFT X (k ) =1 N 1N比较 DFT 的公式:N k =0N 1NX (k ) = DFT x(n) = x(n)W nk , k = 0,1,L, N 1n =0得知可用两种方法来实现 IDFT 的快速算法:()只要把 DFT 运算中的每一个系数 W nk 该为 W nk ,并且最后再乘以常数 1 ,就可以用时间抽取法N N N或频率抽取的 FFT 算法来直接计算 IDFT。这种方法需要对 FFT 的程序和参数 稍 加 改 动 才 能 实 现 。 ( ) 因 为x(n) =1 N 1N1 DFT X * (k ),

18、n = 0,1,L, N 1 ,也就 X * (k )W nk * =N k =0 N是说,可先将 X(k)取共轭变换,即将 X(k)的虚部乘以,就可直接调用FFT 的程序,最后再对运算结果取一次共轭变换并乘以常数 1/N 即可得到 x(n)的值。这种方法中,FFT 运算和 IFFT 运算都可以共用一个子程序块, 在使用通用计算机或用硬件实现时比较方便。4.1.3 混合基 FFT 算法以上讨论的是基 2 的 FFT 算法,即 N = 2 M 的情况,这种情况实际 上使用得最多,这种 FFT 运算,程序简单,效率很高,用起来很方便。另外,在实际应用时,有限长序列的长度 N 到底是多少在很大程度时

19、是由人为因素确定的,因此,大多数场合人们可以将 N 选定为 N = 2 M ,从而可 以直接调用以为基数的 FFT 运算程序。如果长度 N 不能认为确定,而 N 的数值又不是以 2 为基数的整数次方,一般可有以下两种处理方法:() 将 x(n)用补零的方法延长,使 N 增长到最邻近的一个N = 2 M 数值。例如,N=30,可以在序列 x(n)中补进x(30)x(31)两个零值点,使 N=32。如果计算 FFT 的目的是为了了解整个频谱,而不是特定频率点,则此 法可行。因为有限长序列补零以后并不影响其频谱 X (e jw ) ,只是频谱的采样点数增加而已。() 如果要求特定频率点的频谱,则 N

20、 不能改变。如果 N为复合数,则可以用以任意数为基数的 FFT 算法来计 算。快速傅里叶变换的基本思想就是要将 DFT 的运算 尽量分小。例如,N=6 时,可以按照 N=3分解, 将点 DFT 分解为组点 DFT。举例:N=9 时的快速算法。凡是可以利用傅里叶变换来进行分析、综合、变换的地方,都可以利用 FFT 算法及运用数字计算技术加以实现。FFT 在数字通信、语音信号处 理、图像处理、匹配滤波以及功率谱估计、仿真、系统分析等各个领域都得 到了广泛的应用。但不管 FFT 在哪里应用,一般都以卷积积分或相关积分 的具体处理为依据,或者以用 FFT 作为连续傅里叶变换的近似为基础。4.2.1 利

21、用 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)的卷积的结果 y(n)也是一个有限长序列。假设 x(n)与h(n)的长度分别为 N1 和 N2,则 y(n)的长度为 N=N1+N2-1。若通过补零使 x(n)与 h(n)都加长到 N 点,就可以用圆周卷积来计算线性卷积。这样得到用 FFT 运算来求 y(n)值(快速卷积)的步骤如下:() 对 序 列 x(n) 与 h(n) 补 零至

22、长为 N ,使 N N1+N2-1 ,并且 N = 2 M (M为整数) ,即x(n) = x(n), n = 0,1,L, N1 10,n = N1, N1 + 1,L, N 1h(n) = h(n), n = 0,1,L, N 2 10,n = N 2, N 2 + 1,L, N 1() 用 FFT 计算 x(n)与 h(n)的离散傅里叶变换x(n) ( FFT ) X (k )(N 点)h(n) ( FFT ) H (k )(N 点)() 计算 Y(k)=X(k)H(k)() 用 IFFT 计算 Y(k)的离散傅里叶反变换得:y(n)=IFFTY(k) (N 点)互相关及自相关的运算已广

23、泛的应用于信号分析与统计分析,应用于连续时间系统也用于离散事件系统。用 FFT 计算相关函数称为快速相关,它与快速卷积完全类似,不同的 是一个应用离散相关定理,另一个应用离散卷积定理。同样都要注意到离散 傅里叶变换固有的周期性,也同样用补零的方法来绕过这个障碍。设两个离散时间信号 x(n)与 y(n)为已知,离散互相关函数记作 Rxy (n) , 定义为Rxy (n) = x(m) y(n + m)m =如果 x(n)与 y(n)的序列长度分别为 N1 和 N2,则用 FFT 求相关的计算步骤如下:( )对序 列 x(n) 与 y(n) 补 零至长为 N ,使 N N1+N2-1 ,并且 N

24、= 2 M (M为整数) ,即x(n) = x(n), n = 0,1,L, N1 10,n = N1, N1 + 1,L, N 1y(n) = y(n), n = 0,1,L, N 2 10,n = N 2, N 2 + 1,L, N 1()用 FFT 计算 x(n)与 y(n)的离散傅里叶变换x(n) ( FFT ) X (k )(N 点)y(n) ( FFT ) Y (k )(N 点)()将 X(k)的虚部 ImX(k)改变符号,求得其共轭 X*(k)()计算 Rxy (k ) =X*(k)Y(k)() 用 IFFT 求得相关序列 Rxy (n)Rxy (n) IFFT Rxy (k )

25、 (N 点)如果 x(n)y(n),则求得的是自相关序列 Rxx (n)4.2.3 ChirpZ 变换采用 FFT 算法可以很快的计算出全部 DFT 值,也即 Z 变换在单位圆 上的全部等间隔采样值。但是,很多场合下,并非整个单位圆上的频谱都是 很有意义的,例如对于窄带信号过程,往往只需要对信号所在的一段频带进 行分析,这是,希望采样能密集在这段频带内,而对频带以外的部分,则可 以完全不管。另外,有时也希望采样能不局限于单位圆上,例如,语音信号 处理中,往往需要知道其 Z 变换的极点所在频率,如果极点位置离单位圆 较远,则其单位圆上的频谱就很平滑,如图所示,这是很难从中识别出极 点所在的频率。

26、要是采样不是沿单位圆而是沿一条接近这些极点的弧线进 行,则所得的结果将会在极点所在频率上出现明显的尖峰,从而可以较准确 的测定极点频率。螺线采样就是一种适用于这种需要的变换,并且可以采用 FFT 来快速计算,这种变换也称为 Chirp-Z 变换,它是沿 Z 平面上的一段螺线作等分 角的采样,这些采样点可表达为kz = AW k , k = 0,1,L, M 1其中M为采样点的总数,A为起始点位置,这个位置可以进一步用它的半径0A0及相角 0 来表示参数 W 可表示为A = A e j 00W = W e j0其中 W0 为螺线的伸展率, W0 时螺线内缩(反时针方向); W0 时螺线外伸。 0 为螺线上采样点之间的等分角。螺线采样点在 Z 平面上的分布 可表示为下图。下面分析这些点上采样值计算的特点。假定 x(n)是长度为 N 的有限长信号序列,则其 Z 变换在采样点上的值为

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2