第4章快速傅里叶变换(FFT)

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

N /4 1

l 0
2 kl x3 (l )WN /2
N /4 1

l 0
(2 l 1) x4 (l )WNk /2 N /4 1
N /4 1

l 0
x3 (l )W
kl N /4
W
k N /2

l 0
kl x4 (l )WN /4
X 3 (k ) WNk /2 X 4 (k )
k
N 2
k ,因此 WN
X (k ) X 1 (k ) WNk X 2 (k )
k 0,1,2,
, N -1
第4章 快速傅里叶变换(FFT)
X (k ) X 1 (k ) WNk X 2 (k ),
N X (k ) X 1 (k ) WNk X 2 (k ), 2
r 0, 1 , r 0, 1,
N , 1 2 N , 1 2
第4章 快速傅里叶变换(FFT)
则x(n)的DFT为 X (k ) x(n)WNkn
n 偶数 N / 2 1
n 奇数

x(n)WNkn x(2r 1)WNk (2 r 1) x2 (r )WN2 kr
, N / 4 1
第4章 快速傅里叶变换(FFT)
这样,经过第二次分解,又将N/2点DFT分解为2个
N/4点DFT和(4.2.10)式或(4.2.11)式所示的N/4个蝶形运算, 如图4.2.3所示。 依次类推,经过M次分解,最后将N点DFT分解成N 个1点DFT和M级蝶形运算,而1点DFT就是时域序列本 身。一个完整的8点DIT-FFT运算流图如图4.2.4所示。
N N CM M log 2 N 2 2
复数加次数为
CA N M N log2 N
第4章 快速傅里叶变换(FFT)
而直接计算DFT的复数乘为N2次,复数加为N(N-1)次。
当N>>1时,N2≥ (N/2) log2N,所以,DIT-FFT算法比直
接计算DFT的运算次数大大减少。 例如,N=210=1024时,
(4.2.3a) (4.2.3b)
WN
m
N 2
m WN
FFT算法就是不断地把长序列的DFT分解成几个短序 列的DFT,并利用WNkn的周期性和对称性来减少DFT 的运算次数。算法最简单最常用的是基2FFT。
第4章 快速傅里叶变换(FFT)
4.2.2 时域抽取法基2FFT基本原理
基2FFT算法分为两类:时域抽取法FFT(Decimation
k mk 图中用到关系式 WN 。图中输入序列不是顺序排 W /m N
列,但后面会看到,其排列是有规律的。图中的数组A 用于存放输入序列和每级运算结果。
第4章 快速傅里叶变换(FFT)
图4.2.3 8点DFT二次时域抽取分解运算流图
第4章 快速傅里叶变换(FFT)
图4.2.4 8点DIT-FFT运算流图
x3 (l ) x1 (2l ) x4 (l ) x1 (2l 1)
l 0, 1,
N , 1 4
第4章 快速傅里叶变换(FFT)
X1(k)又可表示为
X 1 (k )
N /4 1

l 0
x1 (2l )W
2 kl N /2

N /4 1

l 0
(2 l 1) x1 (2l 1)WNk /2
图4.2.5 DIT-FFT算法与直接计算DFT所需复数乘法次数的比较曲线
第4章 快速傅里叶变换(FFT) 4.2.4 DIT-FFT的运算规律及蝶形画法
1. 由图4.2.4可以看出,DIT-FFT的运算过程很有规律。 N=2M点的FFT共进行M级运算,每级由N/2个蝶形运算 组成。 同一级中,每个蝶形的两个输入数据只对计算本蝶形有 用,而且每个蝶形的输入、输出数据结点又同在一条水 平线上,这就意味着计算完一个蝶形后,所得输出数据 可立即存入原输入数据所占用的存储单元(数组元素)。 这样,经过M级运算后,原来存放输入序列数据的N个 存储单元(数组A)中便依次存放X(k)的N个值。
X 2 (k )
N / 2 1

r 0
kr x1 (r )WN / 2 DFT[ x1 (r )]N
2
(4.2.5)
N / 21

r 0
kr x2 (r )WN / 2 DFT[ x2 (r来自百度文库)]N
2
(4.2.6)
由于X1(k)和X2(k)均以N/2为周期,且WN X(k)又可表示为
第4章 快速傅里叶变换(FFT)
4.2 基2FFT
4.2.1 直接计算DFT的特点及减少运算量的基本
有限长序列x(n)的N点DFT为
kn X (k ) x(n)WN n 0 N 1
k 0, 1, , N 1
(4.2.1)
考虑x(n)为复数序列的一般情况,对某一个k值,直接按 (4.2.1)式计算X(k)的1个值需要N次复数乘法和 (N-1)次复数加法。因此,计算X(k)的所有N个值,共需N2次 复数乘法和N(N-1)次复数加法运算。
1 048 576 204.8 N 5120 log 2 N 2 N2
这样,就使运算效率提高200多倍。图4.2.5为FFT算法 和直接计算DFT所需复数乘法次数CM与变换点数N的关 系曲线。由此图更加直观地看出FFT算法的优越性,显 然,N越大时,优越性就越明显。
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
偶数点的 N/2 DFT
序列DFT 的N/2个点
WNk
奇数点的 N/2 DFT
序列DFT 的后N/2个 点
图4.2.1 蝶形运算符号
第4章 快速傅里叶变换(FFT)
图4.2.2 8点DFT一次时域抽取分解运算流图
第4章 快速傅里叶变换(FFT)
由图4.2.1可见,要完成一个蝶形运算,需要一次复
(4.2.11)
其中:
X 5 (k ) X 6 (k )
N / 4 1

l 0 l 0
x5 (l )WNkl/ 4 DFT[ x5 (l )]N x6 (l )WNkl/ 4 DFT[ x6 (l )]N
4
N / 4 1

4
x5 (l ) x2 (2l ) ,l 0, 1, x6 (l ) x2 (2l 1)
k 0, 1, ,
N 1 2
(4.2.7)
(4.2.8)
N k 0, 1, , 1 2
这样,就将N点DFT分解为两个N/2点DFT和(4.2.7)式以及
(4.2.8)式的运算。(4.2.7)和(4.2.8)式的运算可用图4.2.1所示
的流图符号表示,称为蝶形运算符号。采用这种图示法, 经过一次奇偶抽取分解后,N点DFT运算图可以用图4.2.2 表示。图中,N=23=8, X(0)~X(3)由(4.2.7)式给出,而 X(4)~ X(7)则由(4.2.8)式给出。

r 0
x1 (r )W
kr N /2
W

r 0
kr x2 (r )WN /2
k X 1 (k ) WN X 2 (k )
k 0,1, 2,
, N -1
第4章 快速傅里叶变换(FFT)
其中X1(k)和X2(k)分别为x1(r)和x2(r)的N/2点DFT, 即
X 1 (k )
数乘法和两次复数加法运算。由图4.2.2容易看出,经过 一次分解后,计算1个N点DFT共需要计算两个N/2点DFT 和N/2个蝶形运算。而计算一个N/2点DFT需要(N/2)2次复 数乘法和N/2(N/2-1)次复数加法。所以,按图4.2.2计算
N点DFT时,总共需要的复数乘法次数为
N2 N N N ( N 1) 2 2 2 2 2 N 1
kN / 4 k m W W 同理,由X3(k)和X4(k)的周期性和WN 的对称性 N /2 N /2 /2
4
最后得到:
,k 0, 1, , N / 4 1 k X 1 (k N / 4) X 3 (k ) WN / 2 X 4 (k ) X 1 (k ) X 3 (k ) WNk / 2 X 4 (k )
接用DFT算法进行谱分析和信号的实时处理是不切实际 的。直到1965年提出DFT的一种快速算法以后,情况才 发生了根本的变化。
第4章 快速傅里叶变换(FFT)
自从1965年库利和图基在《计算数学》杂志上发
表了著名的《机器计算傅里叶级数的一种算法》论文 后,桑德—图基等快速算法相继出现,又经人们进行 改进,很快形成一套高效计算方法,这就是现在的快 速傅里叶变换(FFT)。 这种算法使DFT的运算效率提高了1 ~ 2个数量级, 为数字信号处理技术应用于各种信号的实时处理创造
In Time FFT,简称DIT-FFT ); 频域抽取法FFT (Decimation In Frequency FFT,简称DIF-FFT)。本节 介绍DIT-FFT 设序列x(n)的长度为N,且满足N=2M,M为自然数。 按n的奇偶把x(n)分解为两个N/2点的子序列
x1 (r ) x(2r ), x2 (r ) x(2r 1),
第4章 快速傅里叶变换(FFT)
当 N 1 时,N(N-1)≈N2。由上述可见,N点
DFT的乘法和加法运算次数均为N2。当N较大时,运算 量相当可观。例如N=1024时,N2=1 048 576。这对于 实时信号处理来说,必将对处理设备的计算速度提出 难以实现的要求。所以,必须减少其运算量,才能使
kr WN /2
k N N /21

因为 所以

r 0
x(2r )W x1 (r )W
j
2 kr N

N / 2 1

r 0 k N
N / 2 1

r 0
2 kr N
W
N / 2 1

r 0
2 kr WN e
2π 2 kr N
e
j
2π kr N 2
X (k )
N /21
第4章 快速傅里叶变换(FFT) 4.2.3 DIT-FFT算法与直接计算DFT运算量的比较
由DIT-FFT算法的分解过程及图4.2.4可见,当N=2M 时,其运算流图应有M级蝶形,每一级都由N/2个蝶形运算 构成。因此,每一级运算都需要N/2次复数乘和N次复数加 (每个蝶形需要两次复数加法)。所以,M级运算总共需要 的复数乘次数为
k 0, 1,

N 1 2
(4.2.9)
第4章 快速傅里叶变换(FFT)
式中
X 3 (k )
X 4 (k )
N / 4 1

l 0
l 0
kl x3 (l )WN / 4 DFT[ x3 (l )]N
4
N / 4 1

kl x4 (l )WN / 4 DFT[ x4 (l )]N
DFT
如前所述,N点DFT的复乘法次数等于N2。显然, 把N点DFT分解为几个较短的DFT,可使乘法次数大大
第4章 快速傅里叶变换(FFT)
另外,旋转因子具有明显的周期性和对称性。其周期性表现为
mlN WN e j 2π ( mlN ) N
e
j
2π m N
m WN
其对称性表现为
N m * m m N m [ W ] W WN WN 或者 N N
(4.2.10)
第4章 快速傅里叶变换(FFT)
用同样的方法可计算出
k X 2 (k ) X 5 (k ) WN / 2 X 6 (k ) N k X 2 k X 5 (k ) WN X ( k ) /2 6 4
N k 0, 1, , 1 4
2
复数加法次数为
NN N N2 2 1 2 22 2 2
第4章 快速傅里叶变换(FFT)
由此可见,仅仅经过一次分解,就使运算量减少近 一半。既然这样分解对减少DFT的运算量是有效的,且
N=2M, N/2仍然是偶数,故可以对N/2点DFT再作进一步
分解。 与第一次分解相同,将x1(r)按奇偶分解成两个N/4 点的子序列x3(l)和x4(l),即
第4章 快速傅里叶变换(FFT)
第4章 快速傅里叶变换(FFT)
4.1 引言
4.2 基2FFT算法
4.3 进一步减少运算量的措施 4.4 其他快速算法简介
第4章 快速傅里叶变换(FFT)
4.1 引

DFT是数字信号分析与处理中的一种重要变换。但
直接计算DFT,当N较大时,计算量太大,所以在快速
傅里叶变换FFT(Fast Fourier Transform)出现以前,直
了条件,大大推动了数字信号处理技术的发展。
第4章 快速傅里叶变换(FFT)
人类的求知欲和科学的发展是永无止境的。多年来,
人们继续寻求更快、更灵活的好算法。1984年,法国的
杜哈梅尔(P. Dohamel)和霍尔曼(H. Hollmann)提出的分 裂基快速算法,使运算效率进一步提高。本章主要讨论 基2FFT
相关文档
最新文档