FFT算法思想

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

一.FFT 算法思想:

1.DFT 的定义:

对于有限长离散数字信号{x[n]},0 ≤ n ≤ N-1,其离散谱{x[k]}可以由离散付氏变换(DFT )求得。DFT 的定义为:

21

[][]N j

nk N

n X k x n e

π--==∑,k=0,1,…N-1

通常令2j

N

N e

W π-=,称为旋转因子。

2.直接计算DFT 的问题及FFT 的基本思想:

由DFT 的定义可以看出,在x[n]为复数序列的情况下,完全直接运算N 点DFT 需要(N-1)2次复数乘法和N (N-1)次加法。因此,对于一些相当大的N 值(如1024)来说,直接计算它的DFT 所作的计算量是很大的。

FFT 的基本思想在于,将原有的N 点序列分成两个较短的序列,这些序列的DFT 可以很简单的组合起来得到原序列的DFT 。例如,若N 为偶数,将原有的N 点序列分成两个(N/2)点序列,那么计算N 点DFT 将只需要约[(N/2)2 ·2]=N 2/2次复数乘法。即比直接计算少作一半乘法。因子(N/2)2表示直接计算(N/2)点DFT 所需要的乘法次数,而乘数2代表必须完成两个DFT 。上述处理方法可以反复使用,即(N/2)点的DFT 计算也可以化成两个(N/4)点的DFT (假定N/2为偶数),从而又少作一半的乘法。这样一级一级的划分下去一直到最后就划分成两点的FFT 运算的情况。

3.基2按时间抽取(DIT )的FFT 算法思想:

设序列长度为2L N =,L 为整数(如果序列长度不满足此条件,通过在后面补零让其满足)。

将长度为2L N =的序列[](0,1,...,1)x n n N =-,先按n 的奇偶分成两组:

12[2][][21][]

x r x r x r x r =+=,r=0,1,…,N/2-1

DFT 化为:

1/21

/21

2(21)0

/21

/21

22120

0/21

/21

1/2

2/2

[]{[]}[][2][21][][][][]N N N nk

rk r k

N

N

N

n r r N N rk k rk N

N

N r r N N rk k rk N N

N r r X k DFT x n x n W

x r W

x r W x r W W

x r W x r W

W

x r W ---+===--==--=====

+

+=+=

+∑∑

上式中利用了旋转因子的可约性,即:2/2rk

rk

N

N W W =。又令

/21

/21

11/2

22/20

[][],[][]N N rk

rk

N N r r X k x r W

X k x r W --===

=

,则上式可以写成:

12[][][]k

N X k X k W X k =+(k=0,1,…,N/2-1)

可以看出,12[],[]X k X k 分别为从[]X k 中取出的N/2点偶数点和奇数点序列的N/2点DFT 值,所以,一个N 点序列的DFT 可以用两个N/2点序列的DFT 组合而成。但是,从上式可以看出,这样的组合仅表示出了[]X k 前N/2点的DFT 值,还需要继续利用12[],[]X k X k 表示[]X k 的后半段本算法推导才完整。利用旋转因子的周期性,有:(/2)

/2/2

rk

r k N N N W W +=,则后半段的DFT 值表达式:

/21/21()211/21/2100

[][][][]2N N N r k rk N N r r N X k x r W x r W X k --+==+===∑∑,同样,22[][]2N

X k X k +=

(k=0,1,…,N/2-1),所以后半段(k=N/2,…,N-1)的DFT 值可以用前半段k 值表达式获得,中间还利用到()2

2N

N

k k k N

N

W W W W +==-,得到后半段的[]X k 值表达式

为:12[][][]k N X k X k W X k =-(k=0,1,…,N/2-1)。

相关文档
最新文档