第四章 快速傅立叶变换 f ast f ourier t ransform

61
第第第 第第第第第第第 第第第 第第第第第第第 Fast Fourier Transform

Upload: pascal

Post on 19-Mar-2016

177 views

Category:

Documents


0 download

DESCRIPTION

第四章 快速傅立叶变换 F ast F ourier T ransform. 第一节 直接计算 DFT 的问题及改进途径. 1、问题的提出. 设有限长序列 x(n) , 非零值长度为 N , 若对 x(n) 进行一次 DFT 运算,共需 多大的运算工作量 ?. 计算成本? 计算速度?. 注意:. 1) x(n) 为 复数 , 也为 复数 。 2) DFT 与 IDFT 的 计算量相当。. 2. DFT 的运算量. 回忆 DFT 和 IDFT 的变换式:. N 个点. N 次复乘, N-1 次复加. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第四章 快速傅立叶变换第四章 快速傅立叶变换 Fast Fourier Transform

Page 2: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第一节 直接计算 DFT 的问题及改进途径1 、问题的提出 设有限长序列 x(n) ,非零值长度为N ,若对 x(n) 进行一次 DFT 运算,共需多大的运算工作量?

计算成本 ?计算速度 ?

Page 3: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

2. DFT 的运算量 回忆 DFT和 IDFT 的变换式:

10)(1)]([)(1

0

NnWkXN

kXIDFTnxN

k

nk

10)()]([)(1

0

NkWnxnxDFTkX

N

n

nkN

1) x(n) 为复数, 也为复数。2) DFT与 IDFT 的计算量相当。

nkN

jnkN eW

2

注意:

Page 4: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

计算机运算时(编程实现): 0k 0)1(0100 )1()1()0()0( N

NNN WNxWxWxX

1k 0 1 11 ( 1) 1(1) (0) (1) ( 1) NN N NX x W x W x N W

2k 0 2 1 2 ( 1) 2(2) (0) (1) ( 1) NN N NX x W x W x N W

1Nk 0 1 1 1 ( 1) 1( 1) (0) (1) ( 1)N N N N

N N NX N x W x W x N W

NN 次复乘,次复乘, N-1N-1 次复加次复加

NN 个点 个点

10)()]([)(1

0

NkWnxnxDFTkX

N

n

nkN

以 DFT 为例:

Page 5: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

复数乘法 复数加法一个 X(k) N N – 1

N个 X(k)(N点 DFT)

N 2 N (N – 1)

实数乘法 实数加法一次复乘 4 2

一次复加 2

一个 X (k) 4N 2N+2 (N – 1)=2 (2N – 1)

N个 X (k)(N点 DFT)

4N 2 2N (2N – 1)

1

0

( )N

nkN

n

x n W

运算量

(a+jb)(c+jd)=(ac-bd)+j(bc+ad)

Page 6: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

例:计算一个 N点 DFT ,共需 N2 次复乘。以做一次 复乘 1μs 计,若 N =4096 ,所需时间为

ss 1716777216)4096( 2

例:石油勘探,有 24 个通道的记录,每通道波形记 录长度为 5 秒,若每秒抽样 500 点 / 秒, 1 )每道总抽样点数: 500*5=2500 点 2 ) 24 道总抽样点数: 24*2500=6 万点 3) DFT 复乘运算时间: N2=(60000)2=36*108 次

ss 360010*36)60000( 82

Page 7: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

由于计算量大,且要求相当大的内存,难以实现实时处理,限制了 DFT 的应用。长期以来,人们一直在寻求一种能提高 DFT 运算速度的方法。 FFT 便是 Cooley & Tukey 在 1965 年提出的的快速算法,它可以使运算速度提高几百倍,从而使数字信号处理学科成为一个新兴的应用学科。

Page 8: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第二节 改善 DFT 运算效率的基本途径kn

NW 1 、利用 DFT 运算的系数 的固有对称性和周期 性,改善 DFT 的运算效率。 1 )对称性 2 )周期性 3 )可约性

Page 9: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

( ) ( ) nk N n k n N kN N NW W W 周期性

nk mnkN mNW W可约性 /

/nk nk mN N mW W

2j mnkmNe

22 1Nj jNe e

0 / 2 ( / 2) 1 1N k N kN N N NW W W W 特殊点:

nkNW 的特性

2j nknk NNW e

* ( ) ( ) ( )nk nk N n k n N kN N N NW W W W 对称性

Nk nkN NW W

nN nk

N NW W

Page 10: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

2 、将长序列 DFT 利用对称性和周期性分解为短 序列 DFT 的思路 因为 DFT 的运算量与 N2 成正比的,如果一个

大点数 N的 DFT 能分解为若干小点数 DFT 的组合,则显然可以达到减少运算工作量的效果。

Page 11: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

N 点DFT

N/2 点DFT

N/2 点DFT

N/4 点DFT

N/4 点DFT

N/4 点DFT

N/4 点DFT

…….

复乘:2N

22

22

NN

2

2N

2222

4444

NNNN

4

2N

Page 12: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

FFT 算法的基本思想: 利用 DFT 系数的特性,合并 DFT 运算中的某些项 把长序列 DFT→ 短序列 DFT ,从而减少运算量。FFT算法分类 :

时间抽选法 DIT: Decimation-In-Time频率抽选法 DIF: Decimation-In-Frequency

Page 13: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第三节 按时间抽选的基 2-FFT 算法1 、算法原理

设输入序列长度为 N=2M(M 为正整数,将该序列按时间顺序的奇偶分解为越来越短的子序列,称为基 2 按时间抽取的 FFT 算法。也称为 Coolkey-Tukey 算法。 其中基 2 表示: N=2M , M 为整数 . 若不满足这个条件,可以人为地加上若干零值(加零补长)使其达到 N=2M 。

Page 14: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

先将 x(n) 按 n 的奇偶分为两组,作变量置换 :

当 n= 偶数时,令 n=2r;

当 n= 奇数时,令 n=2r+1;

分组,变量置换2 、算法步骤

10)()]([)(1

0

NkWnxnxDFTkX

N

n

nkN

得到:1,...,0)()12(

)()2(2

2

1

Nrrxrx

rxrx

Page 15: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

带入 DFT 中

1

0)(

)]([)(N

n

nkNWnx

nxDFTkX

12/

0

)12(12/

0

2 )12()2(N

r

krN

N

r

rkN WrxWrx

1

0

1

0)()(

N

n

nkN

N

n

nkN

nn

WnxWnx为奇数为偶数

12/

0

22

12/

0

21 )()(

N

r

rkN

kN

N

r

rkN WrxWWrx

Page 16: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

所以

12/

0

22

12/

0

21 )()()(

N

r

rkN

kN

N

r

rkN WrxWWrxkX

由于 nN

nN

jnN

jnN WeeW 2/

2/222

2 --

12/

02/2

12/

02/1 )()(

N

r

rkN

kN

N

r

rkN WrxWWrx

)()( 21 kXWkX kN

1,,1,0 2 Nk 1,,1,0 Nk ?1,,1,0 2 Nk

Page 17: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

X1(k)、 X2(k) 只有 N/2 个点,以 N/2 为周期;而 X

(k) 却有 N 个点,以 N 为周期。要用 X1(k)、 X2(k) 表达全部的 X (k) 值,还必须利用 WN 系数的周期特性。

rkN

kNrN WW 2/

)2/(2/

12/

02/1

12/

0

)2/(2/11 )()()2/(

N

r

rkN

N

r

kNrN WrxWrxkNX

)()2/()()2/(

22

11

kXkNXkXkNX

Page 18: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

后半部分前半部分

又考虑到 的对称性:kNW

kN

kN

NN

kNN WWWW 2/)2/(

)2/()2/()2/( 2)2/(

1 kNXWkNXkNX kNN

有:1,,1,0)()()( 221 Nk

N kkXWkXkX

1,,1,0)()( 221 NkN kkXWkX

Page 19: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

后半部分前半部分

)()()2/( 21 kXWkXkNX kN

)()()( 21 kXWkXkX kN

1,,1,0 2 Nk

)(1 kX

)(2 kX

kNW

)()( 21 kXWkX kN

)()( 21 kXWkX kN

蝶形运算流图符号 说明: (1) 左边两路为输入 (2) 右边两路为输出 (3) 中间以一个小圆表示加、 减运算(右上路为相加 输出、右下路为相减输 出 )1 个蝶形运算需要 1 次复乘, 2 次复加

Page 20: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

复数乘法 复数加法一个 N 点 DFT N 2 N (N–1)

一个 N / 2点 DFT (N / 2)2 N / 2 (N / 2 –1)

两个 N / 2点 DFT N 2 / 2 N (N / 2 –1)

一个蝶形 1 2

N / 2 个蝶形 N / 2 N

总计 N2/2 + N/2≈ N2/2

N(N/2-1) + N≈ N2/2

运算量减少了近一半

分解后的运算量:

Page 21: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

)()()2/(

)()()(

21

21

kXWkXNkX

kXWkXkXk

N

kN

12/,,0 Nk

先将 N=8 点的 DFT 分解成 2 个 4 点 DFT:

可知:时域上: x(0),x(2),x(4),x(6) 为偶子序列 x(1),x(3),x(5),x(7) 为奇子序列 频域上: X(0)~X(3) ,由 X(k) 给出 X(4)~X(7) ,由 X(k+N/2) 给出

例子:求 N=23=8点 FFT 变换 按 N=8→N/2=4 ,做 4 点的 DFT:

Page 22: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

N=8 点的直接 DFT 的计算量为: 复乘: N2 次 = 64 次 复加: N(N-1) 次 = 8×7=56 次

)()()2/(

)()()(

21

21

kXWkXNkX

kXWkXkXk

N

kN

12/,,0 Nk

此外,还有 4 个蝶形结,每个蝶形结需要 1 次复乘, 2 次复加。一共是:复乘 4 次,复加 8 次。

得到 X1(k)和 X2(k) 需要: 复乘: (N/2)2+ (N/2)2 次 = 32 次 复加: N/2(N/2-1)+N/2(N/2-1) =12+12 =24 次

用分解的方法得到 X (k) 需要: 复乘: 32+4 = 36 次 复加: 24+8 = 32 次

Page 23: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

N点 DFT 的一次时域抽取分解图(N=8)

4点

DFT

4点

DFT

x(0)

x(2)x(4)x(6)

x(1)x(3)x(5)x(7)

X1(0)

X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)

X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)3

8W

28W

18W

08W

Page 24: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

奇序列、偶序列、

)6()2()4()0(

:)(1 xxxx

rx

奇序列、偶序列、

同理:)7()3()5()1(

:)(2 xxxx

rx

因为 4点 DFT 还是比较麻烦,所以再继续分解。 若将 N/2(4 点 ) 子序列按奇 / 偶分解成两个 N/4 点 (2点 ) 子序列。即对将 x1(r) 和 x2(r) 分解成奇、偶两个 N/4点 (2 点 ) 点的子序列。

1,0)1...0()()12(

)()2(4

41

31

lllxlx

lxlxN 此处,

奇序列偶序列

设:

1,0)1...0()()12(

)()2(4

62

52

lllxlx

lxlxN 此处,

奇序列偶序列

设:

Page 25: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

那么, X1(k) 又可表示为

14/

0

)12(2/1

14/

0

22/11 )12()2()(

N

l

klN

N

l

lkN WlxWlxkX

14/

04/42/

14/

04/3 )()(

N

l

lkN

kN

N

l

lkN WlxWWlx

)()( 42/3 kXWkX KN

1,......1,0)()()(

)()()(4

42/341

42/31

N

kN

N

kN k

kXWkXkX

kXWkXkX

Page 26: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

14/

0

)12(2/2

14/

0

22/22 )21()2()(

N

l

klN

N

l

lkN WlxWlxkX

14/

04/62/

14/

04/5 )()(

N

l

lkN

kN

N

l

lkN WlxWWlx

1,......1,0)()()(

)()()(4

62/542

62/52

N

kN

N

kN k

kXWkXkX

kXWkXkX

X2(k) 也可以进行相同的分解:

注意:通常我们会把 写成 。kNW 2/

kNW 2

)()( 62/5 kXWkX KN

Page 27: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

N点 DFT 的第二次时域抽取分解图 (N=8)

2点DFT

2点DFT

2点DFT

2点DFT

x(0)x(4)x(2)x(6)x(1)x(5)x(3)x(7)

X3(0)X3(1)X4(0)X4(1)X5(0)X5(1)X6(0)X6(1)

08W2

8W

08W2

8W

X1(0)X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3) 3

8W

28W

18W

08W

X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)

4点

DFT

4点

DFT

x(0)

x(2)x(4)x(6)

x(1)x(3)x(5)x(7)

X1(0)

X1(1)X1(2)X1(3)X2(0)X2(1)X2(2)X2(3)

X(0)X(1)X(2)X(3)X(4)X(5)X(6)X(7)3

8W

28W

18W

08W

Page 28: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

)1()0(

)()]([)(

323

14/

04/333

xWx

WlxlxDFTkX

k

N

l

klN

)1()0()1()0()1(

)1()0()0(

30

2331

233

30

233

xWxxWxX

xWxX

8

8

08W

X3(0)

X3(1)

x(0)=x3(0)

x(4)=x3(1)

Page 29: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

N点 DIT―FFT 运算流图 (N=8)

x(0)

x(4)

x(2)

x(6)

x(1)

x(5)

x(3)

x(7)

X(0)

X(1)

X(2)

X(3)

X(4)

X(5)

X(6)

X(7)

0NW

0NW

0NW

0NW

0NW

2NW

0NW

2NW

0NW

2NW

1NW

3NW

Page 30: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

3、 DIT―FFT 算法与直接计算 DFT 运算量的比较

22log

2NN

N

1)、 N=2M的 DFT 运算可分成 M 级,每一级有 N/2 个蝶形 ,每个蝶形有一次复乘两次复加。N

N2log

2NN 2log2) 、所以 M 级共有 次复乘和 次复加。

3) 、若直接计算 DFT ,需 N2 次复乘和 N(N-1) 次复加。显然,当 N 较大时,有: 例如, N=210=1024 时

2

2

1048576 204.8( / 2) log 5120

NN N

Page 31: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

FFT 算法与直接计算 DFT 所需乘法次数的比较曲线

Page 32: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

4、 DIT―FFT 的运算规律及编程思想 FFT 的每级(列)计算都是由 N 个复数数据(输入)两两构成一个蝶型(共 N/2 个蝶形)运算而得到另外 N 个复数数据(输出)。 当数据输入到存储器以后,每一组运算的结果,仍然存放在这同一组存储器中直到最后输出。例:将 x(0) 放在单元 A(0) 中,将 x(4) 放在单元 A(1)中, W8

0

放在一个暂存器中。将 x(0) + W8

0x(4) → 送回 A(0) 单元将 x(0) - W8

0x(4) → 送回 A(1) 单元0

8W

X3(0)

X3(1)

x(0)

x(4)

1) 原位运算 ( 亦称同址计算 )

Page 33: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

x(0)

x(4)

x(2)

x(6)

x(1)

x(5)

x(3)

x(7)

X(0)

X(1)

X(2)

X(3)

X(4)

X(5)

X(6)

X(7)

0NW

0NW

0NW

0NW

0NW

2NW

0NW

2NW

0NW

2NW

1NW

3NW

回顾: N点 DIT―FFT 运算流图 (N=8)

Page 34: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

如上所述, N点 DIT―FFT 运算流图中,每级都有 N/2 个蝶形。每个蝶形都要乘以因子 WN

P ,称其为旋转因子, p 称为旋转因子的指数。

2)旋转因子的变化规律

观察 FFT 运算流图发现,第 L 级共有 2L-1 个不同的旋转因子。 N=23=8 时的各级旋转因子表示如下:

L=1 时, WNp=WN/4

J , N/4 =21 =2L , J=0

L=2 时, WNp =WN/2

J , N/2 =22 =2L , J=0, 1

L=3 时, WNp =WN

J , N =23 =2L ,J=0, 1, 2, 3

Page 35: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

对 N=2M 的一般情况,第 L 级的旋转因子为:12,...,1,0 1

2 LJPN JWW L

MLMLML N 2222

12,...,1,0 122

LJ

NJ

NP

N JWWWLM

ML

LMJp 2

Page 36: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

设序列 x(n)经时域抽选 (倒序 ) 后,存入数组 X中。如果蝶形运算的两个输入数据相距 B 个点 (B=2L-

1) ,应用原位计算,则蝶形运算可表示成如下形式:

pNLLL

pNLLL

WBJXJXBJX

WBJXJXJX

)()()(

)()()(

11

11

MLJJp LLM ,...,2,112,...,1,02 1 ,,式中:

下标 L 表示第 L 级运算, XL(J) 则表示第 L 级运算后数组元素 X(J) 的值。

Page 37: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

3) 编程思想及流程图开始

送入 x(n)和 N=2M

调整输入 x(n) 的顺序

for(L=1; L<=M; L++)

B = 2L-1

for(J=0; J<=B-1; J++)

p = J·2M-L

for(k = J; k<= N-1; k=k+2L)

pN

pN

WBkXkXBkX

WBkXkXkX

)()()(

)()()(

输出结果结束

Page 38: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

4 )码位倒序 由 N=8 蝶形图看出:原位计算时, FFT 输出的 X(k) 的次序正好是顺序排列的,即 X(0)…X(7),但输入 x(n) 都不能按自然顺序存入到存储单元中,而是按 x(0),x(4),x(2),x(6) ,x(1),x(5),x(3),x(7) 的顺序存入存储单元,即为乱序输入,顺序输出。 这种顺序看起来相当杂乱,然而它是有规律的。即码位倒读规则。

Page 39: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

自然顺序 n 二进制码表示 码位倒读 码位倒置顺序n’

以 N=8 为例:

0

1

2

3

4

5

6

7

000

001

010

011

100

101

110

111

000

100

010

110

001

101

011

111

0

4

2

6

1

5

3

7

看出:码位倒读后的顺序刚好是数据送入计算机内的顺序。

Page 40: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

x (0) x (1) x (2) x (3) x (4) x (5) x (6) x (7)A (0) A (1) A (2) A (3) A (4) A (5) A (6) A (7)

A (0) A (1) A (2) A (3) A (4) A (5) A (6) A (7)x (0) x (4) x (2) x (6) x (1) x (5) x (3) x (7)

倒序规律

Page 41: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

对于数对于数 NN ,,在其二进制最高位加在其二进制最高位加 11 ,等于加,等于加 N/2N/2 。。

若已知某个反序号为若已知某个反序号为 JJ ,,为求下一个反序号,为求下一个反序号,可先判可先判 JJ 的最高位:的最高位: 1) 1) 若为若为 00 ,则把该位变成,则把该位变成 11 (即加(即加 N/2N/2 ))就得就得到下到下 一个反序号,一个反序号, 2) 2) 若为若为 11 ,则需判断次高位:,则需判断次高位: ① ① 若次高位为若次高位为 00 ,则把最高位变,则把最高位变 00 ((相当减去相当减去 N/2N/2 ))后,再把次高位变后,再把次高位变 11 (即加(即加 N/4N/4 )。)。

② ② 若次高位为若次高位为 11 ,则需判断次次高位,则需判断次次高位…………

分析:分析:

Page 42: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

倒倒序序排排列列算算法法的的流流程程图图

正序序列已在数组 A[ ] 中,输 入 N

LH= N/2 , j=LH , N1 = N-2

j=j-kk=k/2

k=LH

j<k

j=j+k

T = A(j) A(i) = A(j) A(j) = T

for(i=1; i<=N1; i++)

i ≥ j

NNYY

YY

NN

Page 43: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第四节 按频率抽选的基 2-FFT 算法 在基 2 快速算法中,频域抽取法 FFT 也是一种常用的快速算法,简称 DIF―FFT。

设序列 x(n) 长度为 N=2M ,首先将 x(n)前后对半分开,得到两个子序列,其 DFT 可表示为如下形式

Page 44: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

1-N

N/2n

knN

1-N/2

0n

knN

1-N

0n

knN WnxWnxWnxX(k) )()()(

-1N/2

0n

)2/(-1N/2

0n)2/()( Nnk

Nkn

N WNnxWnx

-1N/2

0n

-1N/2

0n)2/()1()( kn

Nkkn

N WNnxWnx 1,...1,0 Nk

kjkkNN

jkNN eeW 12

22/

式中,

12/

0

1,.....1,0,)2/(1)()(N

n

knN

k NkWNnxnxkX

Page 45: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

:)(k 分为两部分的奇偶可把按 kX

12/....2,1,0,12,2 Nrrkrk 及令

为偶数时,K

12/

02/

12/

0

2

)2/()(

)2/()(2

N

n

rnN

N

n

rnN

WNnxnx

WNnxnxrX

为奇数时,K

12/

02/

12/

0

12

)2/()(

)2/()(12

N

n

rnN

nN

N

n

nrN

WWNnxnx

WNnxnxrX )(

Page 46: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

nNW

)2/()()(1 Nnxnxnx

nNWNnxnxnx )2/()()(2

)(nx

)2/( Nnx

1,...,1,0)2/()()(

)2/()()(2

2

1

N

nN

nWNnxnxnx

Nnxnxnx令

nrN

N

n

nrN

N

n

WnxrXkX

WnxrXkX

2/

12/

022

2/

12/

011

)()12()(

)()2()(

Page 47: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

DIF―FFT 一次分解运算流图 (N=8)

4点

DFT

4点

DFT

x(0)x(1)x(2)x(3)x(4)x(5)x(6)

x(7)

X(0)X(2)X(4)X(6)X(1)X(3)X(5)

X(7)3NW

2NW

1NW

0NW

x1(0)x1(1)x1(2)x1(3)x2(0)x2(1)x2(2)x2(3)

Page 48: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

DIF―FFT 二次分解运算流图(N=8)

N /4点DFT

W N0

W N1

W N2

W N3

x (0)

x (1)

x (2)

x (3)

x (4)

x (5)

x (6)

x (7)

X (0)

X (4)

X (2)

X (6)

X (1)

X (5)

X (3)

X (7)

W N0

W N2

W N0

W N2

N /4点DFT

N /4点DFT

N /4点DFT

Page 49: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

DIF―FFT 运算流图 (N=8)

W N0

W N1

W N2

W N3

W N0

W N2

W N0

W N2

W N0

W N0

W N0

W N0

X (0)

X (4)

X (2)

X (6)

X (1)

X (5)

X (3)

X (7)

x (0)

x (1)

x (2)

x (3)

x (4)

x (5)

x (6)

x (7)

Page 50: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

时间抽取算法与频率抽取算法的比较1) 频率抽选法和时间抽选法总的计算量是相同的

NN

2log2

NN 2log复乘: 复加:2) 频率抽取法和时间抽取法一样,都适用于原位运 算, 即蝶形的输入和输出占用同一个存储单元。3) 均存在码位倒序问题。4) 频率抽选法和时间抽选法一样,基本运算也是蝶形 运算。但两者的蝶形形式略有不同。

Page 51: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

第五节 IDFT 的快速算法- IFFT上述 FFT 算法流图也可以用于离散傅里叶逆变换(Inverse Discrete Fourier Transform ,简称

IDFT)。比较 DFT和 IDFT 的运算公式:

10)(1)]([)(1

0

NnWkXN

kXIDFTnxN

k

nk

10)()]([)(1

0

NkWnxnxDFTkX

N

n

nkN

1) 旋转因子: kN

kN WW

2) 系数: MNN 21 ,

Page 52: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

DIT―IFFT 运算流图

W N0

W N1

W N2

W N3

W N0

W N0

N1x (0)

x (4)

x (2)

x (6)

x (4)

x (5)

x (3)

x (7)

X (0)

X (1)

X (2)

X (3)

X (4)

X (5)

X (6)

X (7)

W N2

W N2

N1

N1

N1

N1

N1

N1

N1

Page 53: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

DIT―IFFT 运算流图 (防止溢出 )

W N0

21

21 x (0)

x (4)

x (2)

x (6)

x (1)

x (5)

x (3)

x (7)

X (0)

X (1)

X (2)

X (3)

X (4)

X (5)

X (6)

X (7)

21

21

21

W N1

21

W N2

21

W N3

21

21

21

W N0

21

W N2

21

21

21

W N0

21

W N2

21

21

W N0

21

21

W N0

21

21

21

W N0

21

W N0

21

Page 54: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

如果希望直接调用 FFT 子程序计算 IFFT ,则可用下面的方法:

1

0

1

0

1( ) ( )

1( ) ( )

Nkn

Nk

NknN

k

x n X k WN

x n X k WN

对上式两边同时取共轭,得:

1

0

1 1( ) [ ( ) ] [ ( )]N

knN

k

x n X k W DFT X kN N

Page 55: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

例 1 、如果通用计算机的速度为平均每次复乘需要 5s ,每次复加需要 0.5s ,用它来计算 512点 的 DFT[x(n)] ,问:1 )直接计算需要多少时间?

2 )用 FFT 需要多少时间?解: 1 )用 DFT 进行运算:

复乘: T1=N2×5×10-6=1.31072 秒 复加: T2=N(N-1)×0.5×10-6=0.130816 秒 总共: T=T1+T2=1.441536 秒

Page 56: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

2 )用 FFT 进行运算: 复乘: T1

’=(N/2)log2N×5×10-6=0.01152 秒

复加: T2’= Nlog2

N ×0.5×10-6=0.002304 秒 总共: T’=T1

’+T2’=0.013824 秒

Page 57: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

例 2 、对一个连续时间信号 xa(t)采样 1 秒得到 4096个采 样点的序列,求:1 )若采样后没有发生混叠现象, xa(t) 的最高频率是

多少?解: 1 秒内采样 4096 个点,说明采样频率是 4096Hz。

Hzf 4096s 即:

hff 2s Hzfh 2048

Page 58: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

2 )若计算采样信号的 4096点 DFT, DFT 系数之间 的频率间隔是多少?

解: ( 要求解的是频谱分辨的间隔 F)

Hzf 4096s 频谱范围是:4096N

)(14096

)(4096s HzHz

Nf

F

Page 59: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

例 3 、长度为 240 点的序列 x(n) 与长度为 N 点的h(n)卷 积。当 N=10 和 240 时,直接进行卷积 x(n)*h(n) 和用 IFFT[X(K)·H(K)] 的方法相比,那种方法求 解 y(n) 的效率更高?x(n) h(n) y(n)=x(n)*h(n)

L≥N1+N2-1X(k)补 L-N1 个零x(n) L点 DFT

补 L-N2 个零h(n) L点 DFT

L点 IDFT y(n)= x(n)*h(n)

H(k)

Y(k)

Page 60: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

直接进行卷积( N=10):

n

mnhnxnhnxny )()()()()(

乘法次数: 240×10 = 2400 次用 FFT 的方法( N=10):添零到 256 点, L=256

乘法次数:3×(L/2)log2

L+ L = 3×128×8+ 256 = 3328 次

Page 61: 第四章  快速傅立叶变换 F ast   F ourier  T ransform

直接进行卷积( N=240):

n

mnhnxnhnxny )()()()()(

乘法次数: 240×240 = 57600 次用 FFT 的方法( N=240):添零到 512 点, L=512

乘法次数:3×(L/2)log2

L+ L = 3×256×9+ 512 = 7424 次