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

63
第第第 第第第第第第第 FFT

description

第四章 快速傅里叶变换 ( FFT ). 主要内容. DIT-FFT 算法 DIF-FFT 算法 IFFT 算法 Chirp-FFT 算法 线性卷积的 FFT 算法. §4.1 引言. FFT: Fast Fourier Transform 1965 年, Cooley-Turky 发表文章 《 机器计算傅里叶级数的一种算法 》 ,提 出 FFT 算法,解决 DFT 运算量太大,在实际使用中受限制的问题。 FFT 的应用。频谱分析、滤波器实现、实时信号处理等。 - PowerPoint PPT Presentation

Transcript of 第四章 快速傅里叶变换 ( FFT )

Page 1: 第四章 快速傅里叶变换 ( FFT )

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

Page 2: 第四章 快速傅里叶变换 ( FFT )

主要内容 DIT-FFT 算法 DIF-FFT 算法 IFFT 算法 Chirp-FFT 算法 线性卷积的 FFT 算法

Page 3: 第四章 快速傅里叶变换 ( FFT )

§4.1 引言 FFT: Fast Fourier Transform 1965 年, Cooley-Turky 发表文章《机器计算傅

里叶级数的一种算法》,提出 FFT 算法,解决 DFT 运算量太大,在实际使用中受限制的问题。

FFT 的应用。频谱分析、滤波器实现、实时信号处理等。

DSP 芯片实现。 TI 公司的 TMS 320c30 , 10MHz 时钟,基 2-FFT1024 点 FFT 时间 15ms 。

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

典型应用:信号频谱计算、系统分析等

)()( kXnx DFT

)()()( nynhnx

FFTnh

nyIFFT

FFTnx

)(

)(

)(

系统分析

频谱分析与功率谱计算

Page 5: 第四章 快速傅里叶变换 ( FFT )

§4.2 直接计算 DFT 的问题及改进途径

1

0

)()(N

n

knNWnxkX

1

0

)(1

)(N

k

knNWkX

Nnx

1 、 DFT 与 IDFT

( )N x n点有限长序列

Page 6: 第四章 快速傅里叶变换 ( FFT )

2 、 DFT 与 IDFT 运算特点复数乘法 复数加法

一个 X(k) N N – 1

N 个 X(k)(N 点 DFT)

N 2 N (N – 1)

1

0

( )N

nkN

n

x n W

a jb c jd ac bd j ad cb

同理: IDFT 运算量与 DFT 相同。

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

一次复加 2

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

N 个 X (k)(N 点DFT)

4N 2 2N (2N – 1)

Page 7: 第四章 快速傅里叶变换 ( FFT )

3 、降低 DFT 运算量的考虑nk

NW 的特性* ( ) ( ) ( )nk nk N n k n N k

N N N NW W W W 对称性

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

nk mnkN mNW W可约性 /

/nk nk m

N N mW W

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

2j nk

nk NNW e

Nk nkN NW W

nN nk

N NW W

2j mnkmNe

2

2 1N

j jNe e

Page 8: 第四章 快速傅里叶变换 ( FFT )

FFT 算法分类 :

时间抽选法DIT: Decimation-In-Time

频率抽选法DIF: Decimation-In-Frequency

FFT

DFT DFT

DFT DFT

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

Page 9: 第四章 快速傅里叶变换 ( FFT )

§4.3 按时间抽取( DIT )的 FFT 算法

12/...210)12()(

)2()(

2

1

Nrrxrx

rxrx,,,,

( Decimation In Time )

1 、算法原理设序列点数 N = 2L , L 为整数。

若不满足,则补零

将序列 x(n) 按 n 的奇偶分成两组:

N 为 2 的整数幂的 FFT 算法称基 -2FFT 算法。

Page 10: 第四章 快速傅里叶变换 ( FFT )

将 N 点 DFT 定义式分解为两个长度为 N/2 的 DFT

1

0)()()(

N

n

knNWnxnxDFTkX

krN

n

N

r

rkN

n

N

rWrxWrx )12(12/

0

212/

0)12()2(

为奇为偶

)(

12/

02/2

)(

2/

12/

01

21

)()(

kX

N

r

rkN

kN

kX

rkN

N

r

WrxWWrx

)()()( 21 kXWkXkX kN记: ………( 1 )

rkN

rkN WW 2/2 (这一步利用: ) , 0,1,... / 2 1r k N

Page 11: 第四章 快速傅里叶变换 ( FFT )

再利用周期性求 X(k) 的后半部分

/ 22

Nk N k k

N N N NW W W W

)(2

)()()(2

22

1

12/

02/1

12/

0

)2/(2/11

kXkN

X

kXWrxWrxkN

XN

r

rkN

N

r

kNrN

rkN

kNrN WW 2/

)2/(2/

)2()

2()

2()

2(

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

2)2/(

1

21

k

NXWk

NXk

NX

NkkXWkXkXkN

N

kN ,

12/,...2,1,0)()( 21 NkkXWkX kN ,

Page 12: 第四章 快速傅里叶变换 ( FFT )

将上式表达的运算用一个专用“蝶形”信流图表示。

)(1 kX

)(2 kX

)()( 21 kXWkX kN

)()( 21 kXWkX kNk

NW

1 2

1 2

( ) ( ) ( )

( ) ( ) ( )2

kN

kN

X k X k W X k

NX k X k W X k

0,1,..., / 2 1k N

注: a. 上支路为加法,下支路为减法;

b. 乘法运算的支路标箭头和系数。

Page 13: 第四章 快速傅里叶变换 ( FFT )

用“蝶形结”表示上面运算的分解: 328 N

)0(x

)1(x

)2(x

)3(x

)4(x

)5(x

)6(x

)7(x

)0(X

)1(X

)2(X

)3(X

)4(X

)5(X

)6(X

)7(X

1NW

0NW

2NW

3NW

)0(1X

)1(1X

)2(1X

)3(1X

)0(2X

)1(2X

(3)2X

)2(2X

DFT

N

点2

DFT

N

点2

Page 14: 第四章 快速傅里叶变换 ( FFT )

分解后的运算量:

复数乘法 复数加法

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

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

一个蝶形 1 2

N/2 个蝶形 N/2 N

总计 2

2

/ 2 / 2

/ 2

N N

N

2

/ 2 1

/ 2

N N N

N

运算量减少了近一半

Page 15: 第四章 快速傅里叶变换 ( FFT )

进一步分解

MN 2 122

MN2N

4

N由于 , 仍为偶数,因此,两个 点

DFT 又可同样进一步分解为 4 个 点的 DFT 。

1 3

1 4

(2 ) ( )

(2 1) ( )

x l x l

x l x l

0,1,..., / 4 1l N

1 3 / 2 4

1 3 / 2 4

( ) ( ) ( )

( ) ( ) ( )4

kN

kN

X k X k W X k

NX k X k W X k

0,1,..., 14

Nk

Page 16: 第四章 快速傅里叶变换 ( FFT )

02/NW

12/NW

)(3 lx

)(4 lx

)2(x

)4(x

)6(x

)0(x)0(1X

)1(1X

)2(1X

)3(1X

)0(3X

)1(3X

)0(4X

)1(4X

DFT

N点4

DFT

N点4

“ 蝶形”信流图表示

Page 17: 第四章 快速傅里叶变换 ( FFT )

N 点 DFT 分解为四个 N/4 点的 DFT

DFT

N点4

DFT

N点4

DFT

N点4

DFT

N点4

)2(x

)4(x

)6(x

)0(x

)1(x

)3(x

)5(x

)7(x

0NW

2NW

0NW

2NW

1NW

0NW

2NW

3NW

)0(X

)1(X

)2(X

)3(X

)4(X

)5(X

)6(X

)7(X

)(

....kX

)(

.....nx

Page 18: 第四章 快速傅里叶变换 ( FFT )

类似的分解一直继续下去,直到分解为最后的两类蝶形运算为止 (2 点 DFT).

如上述 N=8=23 , N/4=2 点中:

类似进一步分解

1 点 DFTx(0)

1 点 DFTx(4)

X3(0)

X3(1)0

2W

Page 19: 第四章 快速傅里叶变换 ( FFT )

进一步简化为蝶形流图:

0NW

X3(0)

X3(1)

x(0)

x(4)

)4()0()4()0()0( 004/3 xWxxWxX NN

)4()0()4()0()1( 014/3 xWxxWxX NN

因此 8 点 FFT 时间抽取方法的信流图如下——

Page 20: 第四章 快速傅里叶变换 ( FFT )

)2(x

)4(x

)6(x

)0(x

)1(x

)3(x

)5(x

)7(x

0NW

0NW

0NW

0NW

第一级

......

0NW

2NW

0NW

2NW

第二级

..............

)(0 kX 1m )(1 kX )(2 kX )(3 kX2m 3m

1NW

0NW

2NW

3NW

)0(X

)1(X

)2(X

)3(X

)4(X

)5(X

)6(X

)7(X 第三级

......................

Page 21: 第四章 快速傅里叶变换 ( FFT )

FFT 运算量与运算特点 1 . N=2L 时,共有 L=log2N 级运算;每一级有 N/2

个蝶形结。2 .每一级有 N 个数据中间数据),且每级只用到本

级的转入中间数据,适合于迭代运算。3 .计算量: 每级 N/2 次复乘法, N 次复加。(每蝶形只乘一

次,加减各一次)。共有 L*N/2=N/2log2N 次复乘法;复加法 L*N=Nlog2N 次。与直接 DFT 定义式运算量相比 ( 倍数 ) N2/(Nlog2N) 。当 N 大时,此倍数很大。

Page 22: 第四章 快速傅里叶变换 ( FFT )

2

22

( ) 2

( ) loglog2

F

F

m DFT N NNm FFT NN

比较 DFT

参考 P150 表 4-1 图 4-6

可以直观看出,当点数 N越大时, FFT 的优点更突出。

Page 23: 第四章 快速傅里叶变换 ( FFT )

按时间抽取 FFT 蝶形运算特点 1 、关于 FFT 运算的混序与顺序处理(位倒序处理) 由于输入序列按时间序位的奇偶抽取,故输入序列是混序的,为此需要先进行混序处理。

混序规律: x(n) 按 n位置进行码位(二进制)倒置规律输入,而非自然排序,即得到混序排列。所以称为位倒序处理。

位倒序实现:( 1 ) DSP实现采用位倒序寻址( 2 )通用计算机实现可以有两个方法:一是严格按照位倒序含义进行;二是倒进位的加 N/2 。

Page 24: 第四章 快速傅里叶变换 ( FFT )

倒位序 自然序

000 0 0 000

100 4 1 001

010 2 2 010

110 6 3 011

001 1 4 100

101 5 5 101

011 3 6 110

111 7 7 111

2 1 0 2( ) ( )x n n n n n倒位序

Page 25: 第四章 快速傅里叶变换 ( FFT )
Page 26: 第四章 快速傅里叶变换 ( FFT )

例 计算 , 。计算 点 FFT 。用时间抽取输入倒序算法,问倒序前寄存器的数 和倒序后 的数据值?

2)( nnx 31....2,1,0n32N

)13(x )13(x

16913)13( 2 x5232 N210 )01101()13(

102 )22()10110(

48422)13( 2 x

解:倒序前

倒序

倒序为

倒序后

Page 27: 第四章 快速傅里叶变换 ( FFT )

DIT FFT 中最主要的蝶形运算实现( 1 )参与蝶形运算的两类结点(信号)间“距离”(码地址)与其所处的第几级蝶形有关;第m 级的“结距离”为

(即原位计算迭代)

( 2 )每级迭形结构为

,12 m )2(,...2,1 LNLm

rN

mmm

mm

rN

mmmm

WkXkXkX

WkXkXkX

)2()()2(

)2()()(1

111

111

Page 28: 第四章 快速傅里叶变换 ( FFT )

蝶形运算两节点的第一个节点为 k值,表示成 L位二进制数,左移 L – m位,把右边空出的位置补零,结果为 r 的二进制数。

2( ) 2L mr k

( 3 ) 的确定:

第m 级的 r 取值:

rNW

kNW

Page 29: 第四章 快速傅里叶变换 ( FFT )

DIT 算法的其他形式流图 输入倒位序输出自然序 输入自然序输出倒位序 输入输出均自然序 相同几何形状

输入倒位序输出自然序 输入自然序输出倒位序

参考 P154-155

Page 30: 第四章 快速傅里叶变换 ( FFT )

时间抽取、 输入自然顺序、 输出倒位序的 FFT 流图

0NW

0NW

0NW

2NW

£ 1

£ 1

£ 1

0NW

£ 1

0NW 2

NW£ 1

£ 1 £ 1

£ 1

X (0)x (0)

X (4)x (1)

X (2)x (2)

X (6)x (3)

X (1)x (4)

X (5)x (5)

X (3)x (6)

X (7)x (7)

£ 1

£ 1

0NW

0NW 2

NW

1NW

3NW

£ 1

£ 1

Page 31: 第四章 快速傅里叶变换 ( FFT )

例 用 FFT 算法处理一幅 N×N 点的二维图像,如用每秒可

做 10万次复数乘法的计算机,当 N=1024 时,问需要多少时间

(不考虑加法运算时间)?

解 当 N=1024 点时, FFT 算法处理一幅二维图像所需复数

乘法约为 次,仅为直接计算 DFT所需时间的 10

万分之一。 即原需要 3000小时,现在只需要 2 分钟。

722

2

10log2

NN

Page 32: 第四章 快速傅里叶变换 ( FFT )

§4.4 按频率抽取( DIF )的 FFT 算法

与 DIT-FFT 算法类似分解,但是抽取的是 X(k) 。即分解 X(k) 成奇数与偶数序号的两个序列。

设: N = 2L , L 为整数。将 X(k) 按 k 的奇偶分组前,先将输入 x(n) 按 n 的顺序分成前后两半:

( Decimation In Frequency)

一、算法原理

Page 33: 第四章 快速傅里叶变换 ( FFT )

1

2/

12/

0

)()()(N

Nn

nkN

N

n

nkN WnxWnxkX

12/

0

)(2

12/

0

2)()(N

n

knN

NN

n

nkN

N

WnxWnx

12/

02

2/ )()(N

n

nkN

NkNN WnxWnx

kNkNW )1(2/

/ 2 1

0

( ) ( 1)2

Nk nk

Nn

Nx n x n W

0,1,..., 1k N

Page 34: 第四章 快速傅里叶变换 ( FFT )

下面讨论 :的 )(12,2 kXrrk

12/

02/2

12/

0

22

)1()()(

)()()2(N

n

nrN

N

N

n

rnN

N

Wnxnx

WnxnxrX

12/

02/2

12/

0

)12(2

)2()()(

)()()12(N

n

nrN

nN

N

N

n

nrN

N

WWnxnx

WnxnxrX

按 k 的奇偶将 X(k) 分成两部分:

显然: 。点的对应两个 DFTNrXrX 2/)12(),2(

Page 35: 第四章 快速傅里叶变换 ( FFT )

nN

N

N

Wnxnxnx

nxnxnx

)]()([)(

)()()(

22

21

)(

)(

2Nnx

nx

nN

N

N

Wnxnx

nxnx

)]()([

)()(

2

2

nNW

令:

用蝶型结构图表示为:

Page 36: 第四章 快速傅里叶变换 ( FFT )

x1(0)

x1(1)

-1

x1(2)

x1(3)

-1

x2(0)

x2(1)

-1x2(2)

x2(3)-1

N/2 点DFT

N/2 点DFT

x(0)

x(7)

x(1)

x(2)

x(3)

x(4)

x(5)

x(6)

X1(0)=X(0)

X2(0)=X(1)

X1(1)=X(2)

X1(2)=X(4)

X1(3)=X(6)

X2(1)=X(3)

X2(2)=X(5)

X2(3)=X(7)

1NW

0NW

2NW

3NW

Page 37: 第四章 快速傅里叶变换 ( FFT )

3 1 1

4 1 1 / 2

( ) ( ) ( / 4)

( ) [ ( ) ( / 4)] nN

x n x n x n N

x n x n x n N W

0,1,..., 14

Nn

3 1 3

4 1 4

( ) (2 ) [ ( )]

( ) (2 1) [ ( )]

X k X k DFT x n

X k X k DFT x n

0,1,..., 14

Nk

N/2 仍为偶数,进一步分解: N/2 → N/4

Page 38: 第四章 快速傅里叶变换 ( FFT )

x3(0)

x3(1)

-1

-1

x4(0)

x4(1)

N/4 点DFT

N/4 点DFT

x1(0)

x1(1)

x1(2)

x1(3)

X3(0)=X1(0)=X(0)

X4(0)=X1(1)=X(2)

X3(1)=X1(2)=X(4)

X4(1)=X1(3)=X(6)

0/ 2NW

1/ 2NW

按照以上思路继续分解,即一个 N/2 的 DFT 分解成两个 N/

4 点 DFT ,直到只计算 2 点的 DFT ,这就是 DIF-FFT 算法。

Page 39: 第四章 快速傅里叶变换 ( FFT )

2 个 1 点的 DFT 蝶形流图

进一步简化为蝶形流图:

1 点 DFTx3(0)

1 点 DFTx3(1)

X(0)

X(4)

02W

02W

X(0)

X(4)

x3(0)

x3(1)

Page 40: 第四章 快速傅里叶变换 ( FFT )

)2(x

)4(x

)6(x

)0(x

)1(x

)3(x

)5(x

)7(x

)0(X

)1(X

)2(X

)3(X

)4(X

)5(X

)6(X

)7(X

0NW

0NW

1NW

2NW

3NW

0NW

0NW

0NW

2NW

0NW

2NW

0NW

1m第一级:

2m第二级:

3m第三级:

Page 41: 第四章 快速傅里叶变换 ( FFT )

二、按频率抽取 FFT 蝶形运算特点1 )原位计算

1 1

1 1

( ) ( ) ( )

( ) [ ( ) ( )]m m m

rm m m N

X k X k X j

X j X k X j W

rNW

1( )mX k

1( )mX j

( )mX k

( )mX j-1

L 级蝶形运算,每级 N/2 个蝶形,每个蝶形结构:

m 表示第m 级迭代, k , j表示数据所在的行数

Page 42: 第四章 快速傅里叶变换 ( FFT )

2 )蝶形运算

对 N=2L 点 FFT ,输入自然序,输出倒位序,两节点距离: 2L-m=N / 2m

1 1

1 1

( ) ( )2

( )2 2

m m m m

rm m m Nm m

NX k X k X k

N NX k X k X k W

第m 级运算:

Page 43: 第四章 快速傅里叶变换 ( FFT )

蝶形运算两节点的第一个节点为 k值,表示成 L位二进制数,左移m-1位,把右边空出的位置补零,结果为 r 的二进制数。

rNW 的确定

12( ) 2mr k

存储单元输入序列 x(n) : N 个存储单元

rNW系数 : N / 2 个存储单元

Page 44: 第四章 快速傅里叶变换 ( FFT )

三、 DIT 与 DIF 的异同 基本蝶形不同

2log2F

Nm N 2logFa N N

DIT: 先复乘后加减 DIF: 先减后复乘

运算量相同

都可原位运算

DIT 和 DIF 的基本蝶形互为转置

Page 45: 第四章 快速傅里叶变换 ( FFT )

§4.5 IDFT 的 FFT 算法( FFT 应用一)

一、从定义比较分析kn

N

N

k

WkXN

kXIDFTnx

1

0

)(1

)]([)(

1

0

)()]([)(N

n

knNWnxnxDFTkX

与 DFT 的比较:

1 )、旋转因子WN-kn 的不同;

2 )、结果还要乘 1/N 。

Page 46: 第四章 快速傅里叶变换 ( FFT )

)]([

1

0

*1

0

***

*

)(1

)(1

)]([)(

kXDFT

knN

N

k

knN

N

k

WkXN

WkXN

kXIDFTnx

二、实现算法——直接使用 FFT程序的算法

** )]([1

)( kXDFTN

nx

共轭 FFT 共轭 乘 1/ N( )X k *( )X k ( )x n

直接调用 FFT子程序计算 IFFT 的方法:

Page 47: 第四章 快速傅里叶变换 ( FFT )

§4.6 线性调频 Z变换( Chirp-Z变换)算法

( FFT 应用二)

单位圆与非单位圆采样( a ) 沿单位圆采样 ; (b) 沿 AB弧采样

o o

o o A B

X (e j)

Re [z ] Re [z ]

jIm [z ]jIm [z ]

A

B

(a ) (b )

X (e j )

Page 48: 第四章 快速傅里叶变换 ( FFT )

螺线采样

0

jIm[ z ]

Re[ z ]o

0

A 0

1.0

z M £ 1 00

£ 1

z 0

(M £ I )0

zk=AW-k k=0, 1, …, M-1

0

0

0

0

j

j

eWW

eAA

Page 49: 第四章 快速傅里叶变换 ( FFT )

Chirp-Z变换的线性系统表示

x (n )

2/ 2 )( nWnh

2/ 2nnWA

g (n )h (n )

£ £½£ 1 / h (n )

X (zn

)

由于系统的单位脉冲响应 可以想象为频率随时间(n)呈线性增长的复指数序列。在雷达系统中 ,这种信号称为线性调频信号( Chirp Signal ),因此,这里的变换称为线性调频 Z变换。

2

2

)(n

Wnh

Page 50: 第四章 快速傅里叶变换 ( FFT )

一、基本算法思路

1

0

)()()()()(M

m

mnxmhnhnxny

LMM d

)1()( nMhnh 2/LMmd

§4.7 线性卷积的 FFT 算法( FFT 应用三)

若 L 点 x(n) ,M点 h(n) ,则直接计算其线性卷积 y(n)

需运算量:若系统满足线性相位,即:

则需运算量:

Page 51: 第四章 快速傅里叶变换 ( FFT )

FFT 法:以圆周卷积代替线性卷积2 1mN M L 令

( ) 0 1( )

0 1

x n n Lx n

L n N

( ) 0 1( )

0 1

h n n Mh n

M n N

N( ) ( )* ( ) ( ) ( )y n x n h n x n h n 则

NN

2log2

NN

2log2

NN

2log2

)]([)()1 nhFFTkH

)]([)()2 nxFFTkX

)()()()3 kXkHkY

)]([)()4 kYIFFTny

N

总运算量: 次乘法 NNN

mF 2log2

3

Page 52: 第四章 快速傅里叶变换 ( FFT )

比较直接计算和 FFT 法计算的运算量

22 (1 3/ 2*log )d

mF

m MLK

m N N

2

2 24 [1 3/ 2*(1 log )] 10 6logm

M MK

M M M

22 3logm

MK

L

讨论:M L 1 2N M L M 则1 )当

1N M L L 则2 )当

mL K 需采用分段卷积

重叠相加法重叠保留法

ML

Page 53: 第四章 快速傅里叶变换 ( FFT )

x(n) 长度很长时,将 x(n) 分为 L 长的若干小的片段, L 与M可比拟。

n

LiniLnxnxi ,其它

,0

1)1()()(

ii nxnx )()(

)()()( nhnxny

ii nhnx )()(

1 、重叠相加法

ii ny )(

则:

输出:

Page 54: 第四章 快速傅里叶变换 ( FFT )

)()()( nhnxny ii

1 MLN

其中:

可以用圆周卷积计算:

MN 2 选 ,上面圆周卷积可用 FFT 计算。

)()()( nhnxny ii N

由于 yi(n) 长度为 N ,而 xi(n) 长度 L ,必有 M-

1

点重叠, yi(n) 应相加才能构成最后 y(n) 的。

ii nyny )()(

Page 55: 第四章 快速傅里叶变换 ( FFT )

h (n )

0 N £ 1M £ 1

x (n )

0

L

2 L 3 L

n

n

n

n

n

L £ 1

0

x 0 (n )

N £ 1

0

x 1 (n ) L

2 L £ 1

L £«N £ 1

3 L £ 10

x2

(n )

2 L

2 L £«N £ 1

重叠相加法图形

Page 56: 第四章 快速傅里叶变换 ( FFT )

n

n

n

N £ 1

0

y 0 (n )£½x 0 (n ) h (n )N

2 L 2 L £«N £ 1

0

0

L £«N £ 1

L

y 1 (n )£½x 1 (n ) h (n )N

y2

(n )£½x2

(n ) h (n )N

Page 57: 第四章 快速傅里叶变换 ( FFT )

和上面的讨论一样, 用 FFT 法实现重叠相加法的步骤如下 : 

① 计算 N点 FFT , H(k)=DFT[ h(n)];

② 计算 N点 FFT , Xi(k)=DFT[ xi(n)];

③ 相乘, Yi(k)=Xi(k)H(k) ;

④ 计算 N点 IFFT , yi(n)=IDFT[ Yi(k)];

⑤ 将各段 yi(n) (包括重叠部分)相加, 。

重叠相加的名称是由于各输出段的重叠部分相加而得名的。

)()(0

nynyi

i

Page 58: 第四章 快速傅里叶变换 ( FFT )

例 已知序列 x[n]=n+2,0n12, h[n]={1,2,1} 试利用重叠相加法计算线性卷积 , 取 L=5 。

y[n]={2, 7, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 41, 14}

解 : 重叠相加法x1[n]={2, 3, 4, 5, 6}

x2[n]={7, 8, 9, 10, 11}

x3[n]={12,13, 14}

y1[n]={2, 7, 12, 16, 20, 17, 6}

y2[n]={ 7, 22, 32, 36, 40, 32, 11}

y3[n]={12, 37, 52, 41, 14}

Page 59: 第四章 快速傅里叶变换 ( FFT )

2 、重叠保存法

此方法与上述方法稍有不同。 先将 x(n) 分段,每段 L=N-M+1 个点,这是相同的。 不同之处是,序列中补零处不补零,而在每一段的前边补上前一段保留下来的(M-1 )个输入序列值, 组成 L+M-1 点序列 xi(n) 。

如果 L+M-1<2m, 则可在每段序列末端补零值点,补到长度为 2m,这时如果用 DFT 实现 h(n) 和 xi

(n)圆周卷积,则其每段圆周卷积结果的前(M-

1 )个点的值不等于线性卷积值,必须舍去。

Page 60: 第四章 快速傅里叶变换 ( FFT )

n

N £ 1

M £ 2

N £ 1

L

M £ 2L

0

x 0 (n )

x 1 (n )

0 n

x 2 (n )

N £ 1 nLM £ 2

0

(a )

重叠保留法示意图

Page 61: 第四章 快速傅里叶变换 ( FFT )

y 0 (n )

0

M £ 2

M £ 1

N £ 1 n

y1

(n )

0M £ 1

M £ 2

N £ 1

y2

(n ) M £ 2

M £ 1

N £ 1

n

n

(b )

重叠保留法示意图

Page 62: 第四章 快速傅里叶变换 ( FFT )

y[k]={2, 7, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, 41, 14}

x1[k]={0, 0, 2, 3, 4} x2[k]={3, 4, 5, 6 ,7} x3[k]={6 ,7 , 8, 9, 10}

y1[k]= x1[k]h[k]= {11, 4, 2, 7, 12}

x4[k]={9, 10 , 11, 12,13}

y2[k]= x2[k]h[k]= {23, 17, 16, 20, 24}

y3[k]= x3[k]h[k]= {35, 29, 28, 32, 36}

y4[k]= x4[k]h[k]= {47, 41, 40, 44, 48}

x5[k]={12,13, 14, 0, 0}

y5[k]= x5[k]h[k]= {12, 37, 52, 41, 14}

解 : 重叠保留法

例 已知序列 x[n]=n+2,0n12, h[n]={1,2,1} 试利用重叠保留法计算线性卷积 , 取 L=5 。

Page 63: 第四章 快速傅里叶变换 ( FFT )

£ 200

0

200

0 2000 4000 6000 8000t

(a )

10

00

5

1000 2000 3000 4000

10008006004002000

0

1

2

£ 200

0

200

0 2000 4000 6000 8000t

(b )

(c )

(d )

f

f

¡Á10 5

¡Á10 5

语音信号消噪过程(a) 信号淹没在啸叫噪声中; (b) 信号与噪声的功率谱;

(c) 去噪后的功率谱; (d) 重构原语音信号

FFT 应用举例