详解FFT(快速傅里叶变换FFT

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

kn

N

W N

N

第四章 快速傅里叶变换

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

快速傅里叶变换(FFT )是计算离散傅里叶变换(DFT )的快速算法。 DFT 的定义式为

N −1

X (k ) = ∑ x (n )W N

R N (k )

n =0

在所有复指数值 W kn 的值全部已算好的情况下,要计算一个 X (k ) 需要 N 次复数乘法和 N -1 次复数加法。算出全部 N 点 X (k ) 共需 N 2

次复数乘法

和 N ( N − 1) 次复数加法。即计算量是与 N 2 成正比的。

FFT 的基本思想:将大点数的 DFT 分解为若干个小点数 DFT 的组合, 从而减少运算量。

W N 因子具有以下两个特性,可使 DFT 运算量尽量分解为小点数的 DFT

运算:

(1) 周期性:

( k + N ) n

N

= W kn

= W ( n + N ) k

(2) 对称性:W

( k + N / 2 )

= −W

k

N N

利用这两个性质,可以使 DFT 运算中有些项合并,以减少乘法次数。例子: 求当 N =4 时,X(2)的值

4 N N N

3

4

4

4

4

4

X (2) = n =0

x (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

(周期性)

4

=[ x (0) + x (2)]-[ x (1) + x (3)]W 0

4

(对称性)

通过合并,使乘法次数由 4 次减少到 1 次,运算量减少。

FFT 的算法形式有很多种,但基本上可以分为两大类:按时间抽取 (DIT )和按频率抽取(DIF )。

4.1 按时间抽取(DIT )的 FTT

为了将大点数的 DFT 分解为小点数的 DFT 运算,要求序列的长度 N 为 复合数,最常用的是 N = 2

M

的情况(M 为正整数)。该情况下的变换称为

基 2FFT 。下面讨论基 2 情况的算法。

先将序列 x(n)按奇偶项分解为两组

⎧x (2r ) = x 1 (r ) ⎨

⎩x (2r +

1) = x 2 (r ) 将 DFT 运算也相应分为两组

N

r = 0,1,L , 2

− 1

N −1

X (k ) = DFT [ x (n )] =

∑ x (n )W kn

n =0

N −1

= ∑ x (n )W

kn

N −1

∑ x (n )W

kn

n =0 n 为偶数

n =0 n 为奇数

N / 2−1

∑ (2 )

2 r k

+

N / 2−1

(2 + 1)

( 2 r +1) k

x r =0

r W N

x r

W N

r =0

N / 2−1

2 r k

+

N / 2−1 k

2 r k

rk k k = W )

r =0

x 1 (r )W N W N r =0

x 2 (r )W N

N / 2−1

= ∑ x 1 (r )W

r =0

N / 2

+ W

N

N / 2−1

∑ x 2 (r )W

r =0

rk N / 2

(因为W

2 rk N

rk

N / 2

= X 1 (k ) + W N X 2

(k )

1

N

2

N 1

N

1 N

2 1 N 2 N

W N

N k

其中 X 1 (k

) 、 X 2 (k ) 分别是 x 1 (n )、x 2 (n ) 的 N/2 点的 DFT

N / 2−1

N / 2−1

rk

rk

X 1 (k ) = ∑ x 1 (r )W N / 2 = ∑ x (2r )W N / 2 ,0 ≤ k ≤ − 1

r =0

r =0

2

N / 2 −1

N / 2 −1

rk

rk

N X 2 (k ) = ∑ x 2 (r )W N / 2 = ∑ x (2r + 1)W N / 2 ,0 ≤ k ≤ −1

r =0

r =0

2

至此,一个 N 点 DFT 被分解为两个 N/2 点的 DFT 。

上面是否将全部 N 点的 X (k ) 求解出来了?

分析: X 1 (k

) 和 N X 2 (k ) 只有 N/2 个点( k = 0,1,L ,

2

− 1 ),则 由

X (k ) = X (k ) + W k X (k ) 只能求出 X (k ) 的前 N/2 个点的 DFT ,要求出

全部 N 点的 X (k ) ,需要找出 X 1 (k

) 、 X 2 (k ) 和 X (k + N / 2) 的关系,其

N 中 k = 0,1,L , 2

− 1。由式子 X (k ) = X 1

(k ) + W k

X

2 (k ) 可得 X (k + N / 2) = X (k + N / 2) + W k + N / 2

k

X 2 (k + N / 2) 化简得

N

X (k + N / 2) = = X 1 (k ) − W N X 2 (k ) , k = 0,1,L , 2

− 1

这样 N 点 DFT 可全部由下式确定出来:

⎧⎪ X (k ) = X (k ) + W k X (k )

⎩⎪⎨ X (k + N / 2) = X (k ) − W k

X (k ) k = 0,1,L , N

− 1 2

(*) 上式可用一个专用的碟形符号来表示,这个符号对应一次复乘和两次复加运 算。

a

a + W k b

b

a − W k b

-1

N

相关文档
最新文档