87

§3.5 快速傅氏变换 (FFT)

Embed Size (px)

DESCRIPTION

§3.5 快速傅氏变换 (FFT). 点击进入. 1. 引言. 2. 时间抽选 (DIT) 基 2 FFT 算法. 3. 频率抽选 (DIF) 基 2 FFT 算法. 讲 授 内 容. 4. IFFT 算法. 5. 线性卷积的 FFT 算法. 3.5.1 引言. 一 . DFT 的计算量 两者的差别仅在指数的符号和因子 1/N. 一个 X(k) 的值的计算量 , 如 X(1). 通常 x (n) 和都是复数 , 所以计算一个 X(k) 的值需要 N 次复数乘法运算 , 和 次 - PowerPoint PPT Presentation

Citation preview

Page 1: §3.5  快速傅氏变换 (FFT)
Page 2: §3.5  快速傅氏变换 (FFT)

5. 线性卷积的 FFT 算法

3. 频率抽选 (DIF) 基 2 FFT 算法4.IFFT 算法

2. 时间抽选 (DIT) 基 2 FFT 算法1. 引言

Page 3: §3.5  快速傅氏变换 (FFT)

3.5.1 3.5.1 引言引言一 . DFT 的计算量

两者的差别仅在指数的符号和因子 1/N.

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

0

NkWnxkXN

n

nkN

1

0

1,,1,0 ,)(1)(N

k

nkN NnWkX

Nnx

Page 4: §3.5  快速傅氏变换 (FFT)

通常 x(n) 和 都是复数 , 所以计算一个 X(k) 的值需要 N 次复数乘法运算 , 和 次 复数加法运算 . 那么 , 所有的 X(k) 就要 N2 次复 数乘法运算 ,N(N-1) 次复数加法运算 . 当 N 很 大时 , 运算量将是惊人的 , 如 N=1024, 则要完 成 1048576 次 ( 一百多万次 ) 运算 . 这样 , 难以做到实时处理 .

nkNW

1N

一个 X(k) 的值的计算量 , 如 X(1)1210 )1()2()1()0()1( N

NNNN WNxWxWxWxX

Page 5: §3.5  快速傅氏变换 (FFT)

二二 .. 改进的途径改进的途径 1. 的对称性和周期性nk

NW

;

)()()()(

**

NknN

kNnN

nkN

kNN

kN

kN

kN

WWW

WWorWW

.

),1(1

),1(

)2/(

2/

)(2)()(

2

kN

NkN

jN

NN

nkNnN

NkN

nkN

knNN

kNnN

WW

eWW

eWWWWWN

得 :

对称性 :周期性 :

Page 6: §3.5  快速傅氏变换 (FFT)

利用上述特性 , 可以将有些项合并 , 并将 DFT 分解为短序列 , 从而降低运算次数 , 提高运算速度 .1965 年 , 库利 (cooley) 和图基(Tukey) 首先提出 FFT 算法 . 对于 N 点 DFT, 仅需(N/2)log2N 次复数乘法运算 . 例如 N=1024=210 时,需要 (1024/2)log2 210 =512*10=5120 次。5120/1048576=4.88% , 速度提高 20 倍

Page 7: §3.5  快速傅氏变换 (FFT)

3.5.2 3.5.2 时间抽选时间抽选 (DIT)(DIT) 基基 2 FFT2 FFT 算算法法 —库利 —库利 -- 图基算图基算法法一 . 算法原理 ( 基 2FFT)( 一 )N/2 点 DFT1. 先将 按 n 的奇偶分为两组作 DFT, 设 N=2L ,不足时 , 可补些零。这样有 : n 为偶数时 : n 为奇数时 : 1,,1,0 ),()12(

1,,1,0 ),()2(

22

21

N

N

rrxrx

rrxrx

1

0

)()]([)(N

n

nkNWnxnxDFTkX因此,

)(nx

Page 8: §3.5  快速傅氏变换 (FFT)

由于 : 所以 ,上式可表示为 :

1

0

22

1

0

21

1

0

)12(1

0

2

1

0

1

0

22

22

))(())((

)12()2(

)()()(

NN

NN

r

rkN

kN

r

rkN

r

krN

r

rkN

N

n

N

n

nkN

nkN

WrxWWrx

WrxWrx

WnxWnxkX(n 为偶数 ) (n 为奇数 )

2

22 )/(222

N

NN WeeW jj

N

)()()()()( 21

1

02

1

01

2

2

2

2kXWkXWrxWWrxkX k

Nr

rkkN

r

rkN

N

N

N

Page 9: §3.5  快速傅氏变换 (FFT)

其中,

2.两点结论: (1) X (k),X (k)均为N/2点的DFT。 (2) X(k)=X (k)+W X (k)只能确定出

X(k)的k= 个;即前一半的结果。

1 2

1 2kN

1

0

1

022

1

0

1

011

2

2

2

2

2

2

2

2

)12()()(

)2()()(

N

N

N

N

N

N

N

N

r

rk

r

rk

r

rk

r

rk

WrxWrxkX

WrxWrxkX

1,,1,0 2 N

Page 10: §3.5  快速傅氏变换 (FFT)

同理 , 这就是说 ,X1(k),X2(k) 的后一半 ,分别 等于其前一半的值。

3.X(k)3.X(k) 的后一半的确定的后一半的确定rkkrN

N

N WW2

2

2

)(

)()()()2

( 1

1

01

)(1

011

2

2

2

2

2

kXWrxWrxkNXN

N

N

N

N

r

rkkr

r

由于 (周期性) ,所以 :

)()2

( 22 kXkNX

Page 11: §3.5  快速傅氏变换 (FFT)

可见 ,X(k)的后一半,也完全由X1(k), X2 (k)的前一半所确定。 *N 点的 DFT 可由两个 N/2 点的 DFT 来计算。

kN

kNN

kN WWWW

NN

22 )(

)2

()2

()2

( 212

NkXWNkXNkXNk

N

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

又由于 ,所以

Page 12: §3.5  快速傅氏变换 (FFT)

实现上式运算的流图称作蝶形运算 前一半

4. 蝶形运算

后一半( N/2 个蝶形 )

( 前一半 )

(后一半 )

1 1

11

-1

)()()(

)()()(

21

21

kXWkXkX

kXWkXkXk

N

kN

)1,,(

)1,,1,0(

2

2

Nk

k

N

N

)()()( 21 kXWkXkX kN

)()()2

( 21 kXWkXkNX kN

)(1 kX

)(2 kXk

NW

由 X1(k) 、 X 2(k) 表示 X(k) 的运算是一种特殊的运算 - 碟形运算

Page 13: §3.5  快速傅氏变换 (FFT)

(1)N/2 点的 DFT 运算量 : 复乘次数 :复加次数 :

(2) 两个 N/2 点的 DFT 运算量 : 复乘次数 :复加次数 : (3)N/2 个蝶形运算的运算量 : 复乘次数 :复加次数 :

5. 计算量分析

复乘 :复加 :

4)

2(

22 NN

)12

(2

NN

2

2N

)12

( NN

2N

NN

22

2)1

2(

2NNNN

222

22 NNN总共运算量 :

按奇、偶分组后的计算量:

* 但是 ,N 点 DFT 的复乘为 N2 ; 复加 N(N-1);与分解后相比可知 , 计算工作点差不多减少 一半。

Page 14: §3.5  快速傅氏变换 (FFT)

例如 N=8 时的 DFT, 可以分解为两个 N/2=4 点的 DFT. 具体方法如下 : (1)n 为偶数时 , 即 分别记作 :

)(42/ 1 kXDFTN ,得点的进行

3,2,1,0

)2()()(3

04

3

0411

k

WrxWrxkXr

rk

r

rk

);6()3(),4()2(),2()1(),0()0(

1

1

1

1

xxxxxxxx

);6(),4(),2(),0( xxxx

Page 15: §3.5  快速傅氏变换 (FFT)

(2) n为奇数时 ,分别记作 :

);7()3(),5()2(),3()1(),1()0(

2

2

2

2

xxxxxxxx

3,2,1,0

)12()()(3

04

3

0422

k

WrxWrxkXr

rk

r

rk

)(42/ 2 kXDFTN ,得点的进行

3,2,1,0),()()4(

)()()(

21

21

kkXWkXkX

kXWkXkXk

N

kN

Page 16: §3.5  快速傅氏变换 (FFT)

(3)(3) 对 对 X(k)X(k) 和 和 X (k)X (k) 进行蝶形运算进行蝶形运算 ,, 前半前半部为部为 X(0) X(3),X(0) X(3), 后半部分为后半部分为 X(4) X(7)X(4) X(7) 整个过程如下图所示整个过程如下图所示 :: x1(0)=x(0) x1(1)=x(2) N/2点 x1(2)=x(4) DFT x1(3)=x(6) x2(0)=x(1) x2(1)=x(3) N/2点 x2(2)=x(5) DFT x2(3)=x(7)

1 2 ~ ~

X1(0)

X1(1)X1(2)

X1(3)

X2(0)X2(1)

X2(2)

X2(3)WN

2

WN1

WN0

WN3

-1

-1

-1

-1

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

Page 17: §3.5  快速傅氏变换 (FFT)

由于 N=2 L , 所以 N/2 仍为偶数 , 可以进 一步把每个 N/2 点的序列再按其奇偶部分 分解为两个 N/4 的子序列。例如, n 为偶数时的 N/2 点分解为 :

( 二 ) N/4 点 DFT

1,,1,0),()2( 431 Nlxlx 1,,1,0),()12( 441 Nlxlx 进行 N/4 点的 DFT, 得到

klN

l

lkN

l

lkN

l

lkN

l

WlxWlxkX

WlxWlxkXNN

NN

)12(2/

1

014/

1

044

22/

1

014/

1

033

)12()()(

)2()()(

44

44

(偶中偶 )(偶中奇 )

Page 18: §3.5  快速傅氏变换 (FFT)

)()()( 4312

kXWkXkX kN

1,,1,0 4 Nk

从而可得到前 N/4 的 X1(k)

)()()4

( 4312

kXWkXkNX kN

后 N/4 的 X1(k) 为

1,,1,0 4 Nk

Page 19: §3.5  快速傅氏变换 (FFT)

( 奇中偶 )

1

04/64/

1

026

1

04/5

1

04/25

44

44

)()12()(

)()2()(NN

NN

l

lkN

lkN

l

l

lkN

l

lkN

WlxWlxkX

WlxWlxkX

( 奇中奇 )

同样对 n 为奇数时, N/2 点分为两个 N/4 点 的序列进行 DFT ,则有 :

14

,,1,0k; (k)XW(k) X(k) X 6kN/252

N

14

,,1,0k; (k)XW(k) Xk)4N( X 6

kN/252

N

进行碟形运算,得:、由 )()( 65 kXkX

Page 20: §3.5  快速傅氏变换 (FFT)

例如 ,N=8时的 DFT可分解为四个 N/4的DFT, 具体步骤如下 :

)4()2()1()0()0()0()()()(

13

13

13

xxxxxx

nxrxlx

(1) 将原序列 x(n) 的“偶中偶”部分 :

构成 N/4 点 DFT ,从而得到 X3(0), X3(1) 。

Page 21: §3.5  快速傅氏变换 (FFT)

)6()3()1()2()1()0()()()(

14

14

14

xxxxxx

nxrxlx

(2) 将原序列 x(n) 的“偶中奇”部分 :

构成 N/4 点 DFT ,从而得到 X4(0), X4(1) 。(3) 将原序列 x(n) 的“奇中偶”部分 :

)5()2()1()1()0()0()()()(

25

25

25

xxxxxx

nxrxlx

构成 N/4 点 DFT ,从而得到 X5(0), X5(1) 。

Page 22: §3.5  快速傅氏变换 (FFT)

(4) 将原序列 x(n) 的“奇中奇”部分 :

)7()3()1()3()1()0()()()(

26

26

26

xxxxxx

nxrxlx

构成 N/4 点 DFT ,从而得到 X6(0), X6(1) 。( 5 )由 X3(0), X3(1), X4(0), X4(1) 进行碟形运算 , 得到 X1(0), X1(1), X1(2), X1(3) 。( 6 )由 X5(0), X5(1), X6(0), X6(1) 进行碟形运算 ,

得到 X2(0), X2(1), X2(2), X2(3) 。

Page 23: §3.5  快速傅氏变换 (FFT)

(0)= (0)= (0) N/4 (1)= (2)= (4) DFT (0)= (1)= (2) N/4 (1)= (3)= (6) DFT (0)= (0)= (1) N/4 (1)= (2)= (5) DFT (0)= (1)= (3) N/4 (1)= (3)= (7) DFT

3 1

3 1

4 1

4 1

5 2

5 2

6 2

6 2

0

2N

N

0

2

N

NW

W

W

W

0

1

2

3

N

N

N

N

-1

-1

-1-2-1

-1

W

W

W

W

X (0)X (1)

X (0)

X (1)

X (0)

X (1)X (0)

X (1)

3

3

4

4

5

5

6

6

X (0)

X (1)

X (2)X (3)

X (0)

X (1)X (2)

X (3)

1

1

1

2

2

2

2

1

X(0)

X(1)X(2)

X(3)

X(4)

X(5)

X(6)

X(7)

( 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) 。

Page 24: §3.5  快速傅氏变换 (FFT)

这样 , 又一次分解 , 得到四个 N/4 点 DFT, 两级蝶形运算 , 其运算量有大约减少一半 即为 N 点 DFT 的 1/4 。 对于 N=8 时 DFT,N/4 点即为两点 DFT, 因此

0,1k ,)()(

0,1k ,)()(

0,1k ,)()(

0,1k ,)()(

4/

1

066

1

04/55

1

04/44

1

04/33

lkN

l

l

lkN

l

lkN

l

lkN

WlxkX

WlxkX

WlxkX

WlxkX

Page 25: §3.5  快速傅氏变换 (FFT)

亦即 , )4()0()1()0()1(

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

31233

03

0233

xWxxWxX

xWxxWxX

N

N

)6()2()1()0()1(

)6()2()1()0()0(0

41244

04

0244

xWxxWxX

xWxxWxX

N

N

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

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

51255

05

0255

xWxxWxX

xWxxWxX

N

N

)7()3()1()0()1(

)7()3()1()0()0(0

61266

06

0266

xWxxWxX

xWxxWxX

N

N

Page 26: §3.5  快速傅氏变换 (FFT)

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

WN0

WN0

WN0

W 0N

-1

-1

-1

-1

X (0)

X (1)

X (0)

X (1)

X (0)

X (1)

X (0)

X (1)

3

3

4

4

5

5

6

6

WN0

WN2

WN0

WN2

-1

-1

-1

-1

X (0)

X (1)

X (2)

X (3)

X (0)

X (1)

X (2)

X (3)

1

1

1

2

1

2

2

2

W

W

W

W

N0

N1

N2

N3

-1

-1

-1

-1

X(0)

X(1)

X(2)

X(3)

X(4)

X(5)

X(6)

X(7)

xxxxxxxx

因此因此 ,,88 点点 DFTDFT 的的 FFTFFT 的运算流图如下的运算流图如下

Page 27: §3.5  快速傅氏变换 (FFT)

这种 FFT 算法 , 是在时间上对输入序列 的次序是属于偶数还是属于奇数来进行分 解的 , 所以称作按时间抽取的算法 。

二 . 运算量 由上述分析可知 ,N=8 需三级蝶形运算 N=2 =8, 由此可知 ,N=2L 共需 L 级蝶形运算 , 而且每级都由 N/2 个蝶形运算 组成 , 每个蝶 形运算有一次复乘 , 两次复加。

(DIT)

3

Page 28: §3.5  快速傅氏变换 (FFT)

因此 ,N 点的 FFT 的运算量为复乘 : mF = ( N/2 ) L= ( N/2 ) log2 N复加 : aF =N L=N log2 N 由于计算机的乘法运算比加法运算所 需的时间多得多,故以乘法作为比较基准。

Page 29: §3.5  快速傅氏变换 (FFT)

(0)=X0(0) X1(0) X2(0) X3(0)=X(0) (4)=X0(1) X1(1) X2(1) X3(1)=X(1) (2)=X0(2) X3(2)=X(2) (6)=X0(3) X3(3)=X(3) (1)=X0(4) X1(4) X2(4) X3(4)=X(4) (5)=X0(5) X3(5)=X(5) (3)=X0(6) X3(6)=X(6) (7)=X0(7) X1(7) X2(7) X3(7)=X(7)

W

W

W

W

N0

N0

N0

N0

-1

-1

-1

-1

W

W

W

W

N0

N2

N0

N2

-1

-1

-1

-1

W

W

W

WN

N

N

N0

1

2

3

.

.

.

.

.

.

.

.

.

.

.

3.5.3 3.5.3 基于基于 DIT 的 FFT 算法的特点 1. 原位运算

输入数据、中间运算结果和最后输出均用同一存储器。xxxxxxxx

Page 30: §3.5  快速傅氏变换 (FFT)

r

Nmmm

rNmmm

WjXkXjX

WjXkXkX

)()()(

)()()(

11

11

),3()6(),2()2(),1()4(),0()0(

0

0

0

0

XxXxXxXx

).7()7(),6()3(),5()5(),4()1(

0

0

0

0

XxXxXxXx

设用 m(m=1,2,… ,L) 表示第 m 列 ; 用 k,j 表示蝶形输入数据所在的(上 / 下)行数 (0,1,2,… ,N-1);这时任何一个蝶形运算可用下面通用式表示, 即

由运算流图可知 , 一共有 N 个输入 / 出行 ,一共有 log2 N=L 列(级)蝶形运算 ( 基本迭代运算 ).

Page 31: §3.5  快速傅氏变换 (FFT)

所以 , 当 m=1 时 , 则有(前两个蝶形)

0001

0001

)1()0()1(

)1()0()0(

N

N

WXXX

WXXX

0001

0001

)3()2()3(

)3()2()2(

N

N

WXXX

WXXX

Page 32: §3.5  快速傅氏变换 (FFT)

当 m=2 时 , 则有(前两个蝶形) 当 m=3 时 , 则有(前两个蝶形)

2112

2112

0112

0112

)3()1()3(

)3()1()1(

)2()0()2(

)2()0()0(

N

N

N

N

WXXX

WXXX

WXXX

WXXX

1223

1223

0223

0223

)5()1()5(

)5()1()1(

)4()0()4(

)4()0()0(

N

N

N

N

WXXX

WXXX

WXXX

WXXX

Page 33: §3.5  快速傅氏变换 (FFT)

可见 , 在某列进行蝶形运算的任意两个节点 ( 行 )k 和 j 的节点变量 就完全可以确定蝶形运算的结果 , 与其它行 ( 节点 ) 无关。 这样 , 蝶形运算的两个输出值仍可放回蝶形运算的两个输入所在的存储器中 , 即实现所谓原位运算。每一组( 列 ) 有 N/2 个蝶形运算 , 所以只需 N 个存储单元,可以节 省存储单元。

)(),( jXkX mm

)(),( 11 jXkX mm

Page 34: §3.5  快速傅氏变换 (FFT)

2 倒位序规律 由图可知 , 输出 X(k) 按正常顺序排列在存储单元 , 而输入是按顺序 :

这种顺序称作倒位序 , 即二进制数倒位。

);); 7(),3(),5(),1(6(),2(),4(),0( xxxxxxxx

Page 35: §3.5  快速傅氏变换 (FFT)

n =00

n =10

n =01

n =11

n =01

n =11

01

0

1

01

0

1

),,( 012 nnnx

(n2)

x(000) 0

x(100) 4

x(010) 2

x(110) 6

x(001) 1

x(101) 5

x(011) 3

x(111) 7

(偶)

(奇)

这是由奇偶分组造成的 , 以 N=8 为例 说明如下 :

Page 36: §3.5  快速傅氏变换 (FFT)

3. 倒位序实现 输入序列先按自然顺序存入存储单元 , 然后经变址运算来实现倒位序排列。设输入序列的序号为 n, 二进制为 (n2 n1 n0 )2 , 倒位序顺序用 表示 , 其倒位序二进制为 (n0 n1 n2 )2 , 例如 ,N=8 时如下表:

Page 37: §3.5  快速傅氏变换 (FFT)

0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 4 2 0 1 0 0 1 0 2 3 0 1 1 1 1 0 6 4 1 0 0 0 0 1 1 5 1 0 1 1 0 1 5 6 1 1 0 0 1 1 3 7 1 1 1 1 1 1 7

自然顺序 n 二进制 n n n 倒位序二进制 n n n 倒位顺序 n^2 1 0 0 1 2

Page 38: §3.5  快速傅氏变换 (FFT)

A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8)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)

变址处理方法存储单元自然顺序

变址倒位序4. 蝶形运算两节点的距离 :2m-1

其中 ,m 表示第 m 列 , 且 m =1,… ,L 例如 N=8=23 , 第一级 ( 列 ) 距离为 21-1=1, 第二级 ( 列 ) 距离为 22-1=2 , 第三级 ( 列 ) 距离为 23-1=4 。

Page 39: §3.5  快速傅氏变换 (FFT)
Page 40: §3.5  快速傅氏变换 (FFT)

5.WNr 的确定 ( 仅给出方法 ) 考虑蝶形运算两节点的距离为 2m-1 , 蝶 形运算可表为 Xm(k)=Xm-1(k)+Xm-1(k+2m-1)WNr Xm(k+2m-1)=Xm-1(k)-Xm-1(k+2m-1)WNr 由于 N 为已知 , 所以将 r 的值确定即可。

为此,令 k=(n2n1n0)2 , 再将 k= (n2n1n0)2 左移 (M-m) 位 , 右边位置补零 , 就可得到(r)2 的值,即 (r)2 =(k)2 2L-m 。

Page 41: §3.5  快速傅氏变换 (FFT)

例如 N=8=23 (1)k=2 , m=3 的 r 值 ,∵k=2=(010)2 左移 M-m=3-3=0 ,∴ r=(010)2=2; (2)k=3 ,m=3 的 r 值 ; k= 3=(011)

2, 左移 0 位 ,r=3 ; (3)k=5 ,m=2 的值 ; k=5=(101)2 左移 M-m=1 位 r=(010)2 =2 。

Page 42: §3.5  快速傅氏变换 (FFT)

6. 存储单元 存输入序列 (n),n=0,1, ,N-1, 需 N 个单元 ; 存放系数 , r=0,1, , ( N/2 ) -1, 需 N/2 个存储单元; 共计 (N+N/2) 个存储单元。

x

rNW

Page 43: §3.5  快速傅氏变换 (FFT)

§3.5.4 频率抽取 FFT 算法 ( 桑德—图基算法 ) 一 . 算法原理

1.N 点 DFT 的另一种表达形式

1

0

)()(N

n

nkNWnxkX

1

0

)(1

0

1

2/

1

0

22

2

2

)2

()(

)()(

NN

N

N

n

knN

n

nkN

N

Nn

nkN

n

nkN

WNnxWnx

WnxWnx

Page 44: §3.5  快速傅氏变换 (FFT)

由于 故 因此 X(k) 可表为

nkN

n

kN WWNnxnx

NN

1

0

22)

2()(

, 12 jN eW

N kkN

N

W )1(2

nkN

n

k WNnxnxkXN

1

0

2

)2

()1()()(

1,,1,0 Nk

Page 45: §3.5  快速傅氏变换 (FFT)

2.N 点 DFT 按 k 的奇偶分组可分为两个 N/2 的 DFT 当 k 为偶数 , 即 k=2r 时 ,(-1)k =1 ; 当 k 为奇数 , 即 k=2r+1 时 (-1)k =-1 。 这时 X(k) 可分为两部分:

nr

n

nrN

n

N

N

N

WNnxnx

WNnxnx

2

2

2

1

0

21

0

)2

()(

)2

()(

)2( rX

r 1,,1,0 2 Nr

k 为偶数时:

Page 46: §3.5  快速傅氏变换 (FFT)

可见 , 上面两式均为 N/2 的 DFT 。

nr

n

nN

rnN

n

N

N

N

WWNnxnx

WNnxnxrX

2

2

2

1

0

)12(1

0

)2

()(

)2

()()12(

x x

k 为奇数时:

1,,1,0 2 Nr

Page 47: §3.5  快速傅氏变换 (FFT)

-1

)2

()( Nnxnx

1,,1,0 2 Nn

nNWNnxnx

)

2()(

3. 蝶形运算进行如下碟形运算:和 )

2()( Nnxnx

nNW

)2

( Nnx

)(nx

Page 48: §3.5  快速傅氏变换 (FFT)

-1-1-1-1

WWWW

NN

N

N

0

1

2

3

4.N=8 时 , 按 k 的奇偶分解过程 先蝶形运算,后 DFT:

)0(x)1(x

)5(x)4(x)3(x)2(x

)7(x)6(x

)0(X

)2(X

)6(X)1(X)3(X)5(X)7(X

)4(XDFT

N点2

DFT

N点

2

Page 49: §3.5  快速傅氏变换 (FFT)

5.仿照 DIT 的方法 再将 N/2 点 DFT 按 k 的奇偶分解为两个N/4 点的 DFT, 如此进行下去 ,直至分解为2 点 DFT 。

Page 50: §3.5  快速傅氏变换 (FFT)

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

-1-1-1-1

WWWW

N

NN

N

0

1

2

3

-1-1

-1-1

WW

WW

NN

N

N

02

0

2

-1

-1

-1

-1

W

W

W

W

N

N

N

N

0

0

0

0

x

xx

x

x

x

x

x

例如 N=8 时 DIF 的 FFT 流图如下:

Page 51: §3.5  快速傅氏变换 (FFT)

二 . 原位运算 每级 ( 列 ) 都是由 N/2 个蝶形运算构 成 , 即

-1 WN

r

r

Nmmm

mmm

WjXkXjX

jXkXkX

)]()([)(

)()()(

11

11

)(1 kX m

)(1 jX m

)()()( 11 jXkXkX mmm

rNmmm WjXkXjX )]()([)( 11

Page 52: §3.5  快速傅氏变换 (FFT)

三 . 蝶形运算两节点的距离 一般公式为 2M-m =N/2m 例如 N=23 =8 : (1)m=1 时的距离为 8/2=4 ; (2)m=2 时的距离为 8/4=2; (3)m=3 时的距离为 8/8=1 。

Page 53: §3.5  快速傅氏变换 (FFT)

r 的求法: k=(n2 n1 n0 ) , 左移 m-1 位 , 右边空出补零 ,得 (r)2 ,亦即 (r)2 =(k)2 2m-1 .例如 ,N=8:(1)m=1,k=2, k=(010)2 左移 0 位 ,(r)2=(010)2=2;(2)m=2,k=1, k=(001)2 左移 1 位 ,(r)2=(010)2=2;(3)m=2,k=5, k=(101)2 左移 1 位 ,(r)2=(010)2=2 .

rNmmmmm

mmmm

WNkXkXNkX

NkXkXkX

)]2

()([)2

(

)2

()()(

11

11

四 . 的计算 由于 DIF 蝶形运算的两节点的距离为 N/2m , 所以蝶形运算可表为:r

NW

Page 54: §3.5  快速傅氏变换 (FFT)

1. 相同点 (1) 进行原位运算; (2) 运算量相同 , 均为( N/2) Log2N 次复乘 ,N Log2N 次复加。 2. 不同点 (1)DIT 输入为倒位序 , 输出为自然顺序; DIF 正好与此相反。但 DIT也有输入为自然顺序 , 输出为倒位序的情况。

五 .DIF 法与 DIT 法的异同

Page 55: §3.5  快速傅氏变换 (FFT)

rNmmm WjXkXjX )()()( 11

rNmmm WjXkXkX )()()( 11 )(1 kX m

)(1 jX m rNW 1

(2)蝶形运算不同a.

(DIT)

用矩阵表示 )(kX m

)( jX m

rNW

rNW

)(1 kX m

)(1 jX m

=1

1

Page 56: §3.5  快速傅氏变换 (FFT)

rNmmm WjXkXjX )]()([)( 11

)()()( 11 jXkXkX mmm )(1 kX m

)(1 jX mr

NW1

b.(DIF)

用矩阵表示 )(kX m

)( jX mr

NW rNW

)(1 kX m

)(1 jX m

=1 1

Page 57: §3.5  快速傅氏变换 (FFT)

(3) 两种蝶形运算的关系 互为转置(矩阵);

将流图的所有支路方向都反向 ,交换输入和输出,即可得到另一种蝶形。

a.(DIT)

b.(DIF)r

NWr

NW

1 11

1

rNW

rNW

Page 58: §3.5  快速傅氏变换 (FFT)

3.5.53.5.5 IFFT IFFT 算法算法一 . 稍微变动 FFT 程序和参数即可实现 IFFT

nkN

N

k

N

n

nkN

WkXN

kXIDFTnx

WnxnxDFTkX

1

0

1

0

)(1)()(

)()()(

Page 59: §3.5  快速傅氏变换 (FFT)

比较两式可知 , 只要 DFT 的每个系数 换成 , 最后再乘以常数 1/N 就可以得到 IDFT的快速算法 --IFFT 。 另外 , 可以将常数 1/N 分配到每级运算中 ,∵ ,也就是每级蝶形运算均乘以 1/2 。

nkNW

nkNW

MMN

)21(

211

Page 60: §3.5  快速傅氏变换 (FFT)

二 . 不改 (FFT)的程序直接实现 IFFT

nkN

N

k

N

k

nkN

WkXN

WkXN

nx

1

0

1

0

*

)(1

])(1[)(

)(1

)(1 1

0

kXDFTN

WkXN

nkN

N

k

)(nx因此,

BABAWW nkN

nkN ][,][

Page 61: §3.5  快速傅氏变换 (FFT)

这就是说 , 先将 X(k) 取共轭 , 即将 X(k) 的虚部乘 -1 ,直接利用 FFT程序计算 DFT;然后再取一次共轭;最后再乘 1/N, 即得 (n) 。所以 FFT,IFFT 可用一个子程序。

x

Page 62: §3.5  快速傅氏变换 (FFT)

3.7 FFT 的应用一 . 用 DFT 计算连续时间信号的傅氏变换可能造成的误差 1.混叠现象 为避免混叠 , 由抽样定理可知,须满足 其中 , 为抽样频率 ; 为信号的最高频率分量; 或者 其中 ,T 为抽样间隔。

hs ff 2sf hf

hs ffT

211

Page 63: §3.5  快速傅氏变换 (FFT)

2.频谱泄漏 在实际应用中,通常将所观测的信号 限制在一定的时间间隔内 ,也就是说,在时域对信号进行截断操作 ,或 称作加时间窗 ,亦即用时间窗函数乘以信号 , 由卷积定理可知,时域相乘 ,频域为卷积 , 这就造成拖尾现象 , 称之为频谱泄漏 .

)(1 nx

Page 64: §3.5  快速傅氏变换 (FFT)

0n

0

)(1 nx )(1jeX

n

)(2 nx

)(2jeX

n

)()( 21 nxnxny

jeY

Page 65: §3.5  快速傅氏变换 (FFT)

3.栅栏效应 用 DFT 计算频谱时,只是知道为频率 的整数倍处的频谱。在两个谱线之间 的情况就不知道 , 这相当通过一个栅栏观察 景象一样,故称作栅栏效应。 补零点加大周期 ,可使 F 变小来提高 辨力,以减少栅栏效应。

pTF 1

pT

Page 66: §3.5  快速傅氏变换 (FFT)

二、 DFT 与连续时间信号傅氏变换间相对数值的确定 1.连续时间非周期信号傅氏变换对

dejXtx

dtetxjX

tj

tj

21

)(

2. 连续时间周期信号傅氏级数变换对

k

tjk

T

T

tjk

p

ejkXtx

dtetxT

jkX p

p

0

0

0

2/

2/01

Page 67: §3.5  快速傅氏变换 (FFT)

3.DFT 变换时 :

10,)(1)(

10,)()(

1

0

1

0

NnWkXN

nx

NkWnxkX

N

k

nkN

N

n

nkN

Page 68: §3.5  快速傅氏变换 (FFT)

4. 用 DFT 计算非周期信号的傅氏变换 用 DFT 计算所得的频谱分量乘以 T , 就 等于频谱的正常幅度电平;用 IDFT 计算非周 期信号的傅氏反变换,再乘以 就得到所需 信号的正常幅度电平。所以 , 从时间到频率 , 再从频率到时间,整个过程总共乘了 幅度电平未受到影响。

sf

1 sfT

Page 69: §3.5  快速傅氏变换 (FFT)

n

TdtnTt ,,

1

0

)(

)(

)()(

N

n

nTj

n

nTj

tj

enTxT

TenTx

dtetxjX

用 DFT 计算所得的频谱分量乘以 T 的理由:

Page 70: §3.5  快速傅氏变换 (FFT)

)]([

)(

)()(

1

0

/2

1

0

/20

nxDFTT

enxT

enTxTjkX

N

n

Nknj

N

n

NfTjkn s

1,...1,0,,/2 00 NkkNf s又

Page 71: §3.5  快速傅氏变换 (FFT)

000

0 ,,2

,2

kdNNFfF s

)]([

)(1

)(2

)(21)(

1

1

0

2

0

21

00

0

000

kXDFTf

ekjXN

f

ekjX

ejkXnTx

s

N

k

knN

j

s

knN

TfjN

k

k

nTjk

s

用 IDFT 计算非周期信号的傅氏反变换乘以 的理由 sf

dejXtx tj

21

Page 72: §3.5  快速傅氏变换 (FFT)

5. 用 DFT 计算周期信号的傅氏级数 用 DFT 计算出的频谱分量乘以 1/N等于周期信号的频谱的正常幅度电平。而用IDFT 的计算结果乘以 N才等于周期信号正常幅度电平。

Page 73: §3.5  快速傅氏变换 (FFT)
Page 74: §3.5  快速傅氏变换 (FFT)

5.5. 线性卷积的线性卷积的 FFTFFT 算法算法一 . 线性卷积的长度 设一离散线性移不变系统的冲激响 应为 , 其输入信号为 . 其输出 为 .并且 的长度为 N2 点 , 的 长度为 N1 点 , 则:

)(nx)(nx)(nh

)(nh

)(ny)(nx )(nh

1

0

2

)()()()()(N

m

mnhmxnhnxny

)(ny

Page 75: §3.5  快速傅氏变换 (FFT)

以实例说明:

0 1 2 3

12

3)(mx )(mh

0 1 2

1 1.。1

Page 76: §3.5  快速傅氏变换 (FFT)

0 1

1 2 3)(mx

2 3

)( mh

)1( mh

3

0

0)()()0(m

mhmxy

3

0

1)1()()1(m

mhmxy。

Page 77: §3.5  快速傅氏变换 (FFT)

0 1 2 3

)2( mh

)3( mh

0 1

1 2 3)(mx

2 3。

3

0

3)2()()2(m

mhmxy

3

0

6)3()()3(m

mhmxy

Page 78: §3.5  快速傅氏变换 (FFT)

0 1 2 3 4

0 1 2 3 4 5

)4( mh

)5( mh

0 1

1 2 3)(mx

2 3

3

0

5)4()()4(m

mhmxy

3

0

3)5()()5(m

mhmxy

Page 79: §3.5  快速傅氏变换 (FFT)

0 1 2 3 4 5

13 3

56

6

)(ny

1)( 21 NNny 的长度为可见,

Page 80: §3.5  快速傅氏变换 (FFT)

二 . 用 FFT 算 的步骤:

)(ny

;1)(),(.1 21 点补零点,至少为将 NNNnhnx ;求 )()(.2 nhFFTkH

;求 )()(.3 nxFFTkX ;求 )()()(.4 kHkXkY

。求 )()(.5 kYIFFTny

Page 81: §3.5  快速傅氏变换 (FFT)

FFT

FFT

IFFT×

x(n)

h(n)

y(n)

X(k)

H(k)

Y(k)

流程图

Page 82: §3.5  快速傅氏变换 (FFT)
Page 83: §3.5  快速傅氏变换 (FFT)
Page 84: §3.5  快速傅氏变换 (FFT)

L

L L

Page 85: §3.5  快速傅氏变换 (FFT)

L

L L

Page 86: §3.5  快速傅氏变换 (FFT)
Page 87: §3.5  快速傅氏变换 (FFT)

L

LL