快速傅里叶变换 FFT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

因为
,所以:
上式中X1(k)和X2(k)分别为x2(r)和x2(r)的N/2点DFT, 即
由于X1(k)和X2(k)均以N/2为周期,且 X(k)又可表示为:
,以
即将一个N点的DFT分解成为两个N/2点的DFT。 上述运算可用右下图来表示,称为蝶形运算符号。
从右图可知,要完成一 个蝶形运算需要进行一 次复数相乘和两次复数 相加运算。
对于象雷达、通信、声纳等需要实时处理的信号, 因为其运算量更大,所以无法满足信号处理的实时 性要求。迫切需要有新的算法。
二、DFT运算的特点
实际上,DFT运算中包含有大量的重复运算。在WN
矩阵中,虽然其中有N2个元素,但由于WN的周期
性,其中只有N个独立的值,即
,且
这N个值也有一些对称关系。总之,WN因子具有如 下所述周期性及对称性:
N 1
X (k) x(n)WNkn n0
x(n)
1 N
N 1
X (k)WNkn
k 0
k 0,1,2, , N 1 n 0,1,2, , N 1
计算X(k)的运算量:需要N2次复数乘法,N(N-1)
次复数加法。在N较大时计算量很大。
例如:N=1024时, 需要1,048,576次复数乘法, 即 4,194,304次实数乘法
1.对称性
2.周期性 由上述特性还可得出:
利用上述对称特性,可使DFT运算中有些项可以合 并,这样,可使乘法次数减少大约一半;利用WN 矩阵的对称性及周期性,可以将长序列的DFT分解 为短序列的DFT,N越小,运算量能够减少。 例如,对于四点的DFT,直接计算需要16次复数乘 法,根据上述特性可以有以下形5年,J. W. Cooley和J. W. Tukey巧妙应用DFT中 W因子的周期性及对称性提出了最早的FFT,这是 基于时间抽取的FFT。具有里程碑式的贡献(运算量 缩短两个数量级)
1966年,G. Sand提出了基于频率抽取的FFT算法
1975 年 , Winogard 提 出 WFTA 法 ; 1977 年 Kolha 和 Parks提出素因子算法(PFA)
四、按时间抽取(DIT)的FFT--库利-图基算法
1.基本原理
设序列x(n)的长度为N,且满足N=2M,M为自然
数,按n的奇偶将x(n)分解为两个N/2的子序列: x1(r)=x(2r), r=0,1,2,…,N/2-1 x2(r)=x(2r+1) r=0,1,2,…,N/2-1
则x(n)的DFT为:
总的复数加的次数为:
直接计算时复数乘的次数为N2,加为N(N-1)次。当
N>>1时,
,使运算量大大减少。
以N=1024为例,其运算量与直接计算的比例为:
即运算效率提高了200多倍。易知N越大,优越性 越明显。另外,在N=2048时,直接运算需要3个 小时,而采用FFT则只需不到一分钟就能完成! 3.DIT-FFT的运算规律 (1)原位计算
1984年,P. Dohamel和H. Hollmann提出分裂基快速 算法,进一步减少了计算量,提高了计算速度(目 前最理想的算法)
FFT的各种算法
纵观FFT的发展历程,FFT算法分成两大类: (1) 针对N等于2的整数次幂的算法,如基2算法、基 4算法、实因子算法和分裂基算法 (2) 针 对 N 不 等 于 2 的 整 数 次 幂 的 算 法 , 其 以 Winograd 为 代 表 的 一 类 算 法 ( 素 因 子 法 PFA 、 Winograd算法WFTA) 简要介绍库利-图基算法和桑得-图基算法
下图是N=8时的一个分解运算图。
从上图可知,经过一次分解后,计算一个N点的 DFT共需要计算两个N/2点FFT和N/2个蝶形运算。
计 算 一 个 N/2 点 DFT 需 要 (N/2)2 复 数 乘 和 N/2(N/2-1) 次复数加法。所以按刚才的方法计算N点DFT总的 运算量为2(N/2)2+N/2=N(N+1)/2≈N2/2(N>>1时)复数 次乘法和N(N/2-1)+2N/2=N2/2次复数加法运算。
根据运算流图可知,DIT-FFT的运算很有规律。N =2M点的FFT共进行M级运算,每级运算有N/2个 蝶形运算构成;同一级中,每个蝶形的两个输入数 据只对计算本蝶形有用,并且每个蝶形的输入、输 出数据节点又同在一条水平线上,这意味着计算完 一个蝶形后所得数据可立即存入原输入数据所占用 的存贮单元,这样,经过M级运算后,原来存放输 入序列数据的N个存贮单元中并依次存放了X(k)的N 个值。这种利用同一存贮单元存贮计算输入、输出 数据的方法称为原位(址)计算。
这样,又将N/2点的DFT分解为两个N/4点的DFT。 依次类推,经过M-1次分解,最后将N点DFT分解 成N/2个2点DFT。一个完整的8点DFT-FFT运算流 图如下图所示。
2.运算量的比较
从上述分析过程可知,在N=2M时,每一级都由 N/2个蝶形运算构成,即每级都需要N/2次复数乘 和N次复数加,所以总的复数乘的次数为:
则有: 第二列和第三列交换,则:
由此得出:
从上例可知,通过应用对称性和周期性,4点的DFT 实际上只需要进行一次复数乘法。
三、FFT发展简介 FFT的实质:快速傅里叶变换(FFT)并不是一种新 的变换,是为了改进和提高离散傅里叶变换(DFT) 运算速度基于DFT运算特点而发展起来的DFT快 速算法,其实质还是DFT。 FFT发展的原因:DFT是信号分析与处理中的一 种重要变换,广泛应用于通信、图像处理、雷达 及声纳等领域,由于其计算量与变换区间长度N的 平方成正比,在N较大时,计算量很大,使得直接 应用DFT进行实时处理信号是不现实的。
本讲在分析直接计算DFT的特点的基础上介绍 DFT的快速算法-快速傅里叶变换(FFT);同时 简要介绍了FFT算法的发展历程;此外还要介 绍FFT的两种最常用的算法--基于时间抽取 的FFT(DIT:库利-图基算法)和基于频率 抽取的FFT(DIF:桑德-图基算法)。
一、直接计算DFT存在的问题 N点序列x(n)的DFT变换定义为:
由此可见,仅仅经过一次分解就能使运算量减少近 一半!
因为N/2仍然是偶数,可以作进一步的分解:
与第一次分解相同,将x1(r)按奇偶分解成两个N/4 的子序列x3(l)和x4(l), 即:
则,X1(k)又可表示为:
同理,X3(k)和X4(k)的周期性和WN的对称性,到最 后我们能够得到:
同理可得: 其中:
相关文档
最新文档