§5 快速傅立叶变换 一、 有限离散傅立叶变换
[有限离散傅立叶变换的不同形式]
实(或复)序列 f ( kh )
有限离散傅立叶变换及其反演公式 )
1
(i hd
N k 0,1,, ( N为正整数)
N
N j
N k j i N
N k
N k j i
e jd F d kh f
e kh f h jd F
1 2 2
1 2 2
) ( )
(
) ( )
(
1 2
1
N
1 , , 2 , 1 ,
0
N
k
( N为正整数)
1
0
2 1
0
2
) ( )
(
) ( )
(
N
j
N k j i N
k
N k j i
e jd F d kh f
e kh f h jd F
N 1
N m k m
( k, N为整数)
N m k m
N k j i N
m k m
N k j i
e jd F d
kh f
e kh f h jd F
2 2
) ( )
(
) ( )
(
N 1
[褶积及其性质] 设 f(kh)(k0,1,2,,N1)为实(或复)序列 g (kh)(k0,1,2,) 为具 有周期Nh的序列,称
1
0
] ) [(
) ( )
(
* ) (
N
k
h k n g kh f h nh g nh f 为序列f和g的褶积.设
1
0
2
e ) ( )
(
N
k
N k j i
kh f h jd F
1
0
2
e ) ( )
(
N
k
N k j i
kh g h jd G
hd N1 那末
1
0
2
e )]
(
* ) ( [ )
( ) (
N
k
N k j i
kh g kh f h jd G jd F
1 0
2
e ) ( ) ( )
(
* ) (
N
j
N k j i
jd G jd F d kh g kh f
二、 快速傅立叶变换算法
快速傅立叶变换算法(简称FFT算法)是计算有限离散傅立叶变换的快速方法.
[复序列的 FFT 算法] 计算 复序列{zk} (k0,1,,N1)的有限离 散傅立 叶变换
hd N1 ,就是计算形如
1
0 2
1 ,
e
N
k
N k j i k
j z i
, 0 jN1 的有限项和.对于反演公式,计算的方法类似.
设N=2m, N
i
N e
E
2
, 那末
ENk ENl ,k l( m o dN),ENN 1 又设 k (km1k1k0)km12m1k12k0 j (jm1j1j0) jm12m1 j12 j0
分别是k和j的二进制表示,k, j取值为0或1,v0,1,,m1.那末
0 1 1
0 1 1 0 1 1 0 1 1 0
1 1
) (
) (
) (
) (
k k k
j j j k k k N k k k j
j j
m
m m
m
m z E
因为 EN(km1k1k0)(jm1j1j0)= EN(km12m1k12k0)(jm12m1j12j0)
=ENkm1j02m1 ENkm2(j12j0)2m2ENk0(jm12m1j12j0) =ENkm1(j000)ENkm2(j1j000)ENk0(jm1j1j0) 所以
( )
0 1 1 j j jm
( ) ( 0 0) ( 0 0) ( 0) 0( 1 1 0)
0 1 2
0 1 2 0 1
1 2
1
0 1 0 1 1
j j j k n
k k k
j j j k N j
j k N k
j k N k k k
m
m
m m
m
m
m E E E E
z
从而得出递推公式:
((0) ) ( )
0 1 1 0
1
1 kk k kk
km z m
z
((1) ) ((0) ) 1( 00 0)
1
0 1 1 0
1 2 0
j k N k
k k k k
k k j
m
m m
m z E
z
((2) ) ((1) ) 2(100 0)
2
0 1 2 0 0
1 3 1 0
j j k N k
k k k j k
k k j j
m
m m
m z E
z
(() )
0 1 1 1 1 0
l
k k k j j
j l m l
z (( 1) ) ( 1 00 0)
0 1 2 1 0
j j k N k
l
k k k j j j
l l m
l m
l m
l E
z
(( ) )
1 1 0
m j j
j m
z (( 1) ) 0( 1 10)
0
0 2 1 0
j j j k N k
m k j j j
m
m E
z
最后有
( ) (( ) )
1 1 0 0 1 1
m j j j j j
jm z m
[实序列的FFT算法] 设有2N (N=2m)个元素构成的实序列{k}(k0,1,2,,2N1)要计
算{k}的有限离散傅立叶余弦变换和正弦变换
2 1
0
c o s 1 N
k k
j N
k j
c N (j 0,1,,2N1)
2 1
0
s i n 1 N
k k
j N
k j
s N (j 0,1,,2N1) 可先用FFT算法关于复序列
zk=xk+iyk (xk 2k, yk 2k1) 计算
1
0
1 N 2 k
N k j i k j
j
j z e
iv N u
而 cj , sj 用下列公式去求
N v j
N v u j
u v
v s
N v j
N v u j
u v
v s
N v j
N v u j
u u
u c
N v j
N v u j
u u
u c
v u c
j N j j
N j j N j j
N
j N j j
N j j N j j
j N j j
N j j N j j
N
j N j j
N j j N j j
sin ) (
cos ) (
) 2 (
1
sin ) (
cos ) (
) 2 (
1
cos ) (
sin ) (
) 2 (
1
cos ) (
sin ) (
) 2 (
1
0 0 0
, 2 , 2 ,
1 N
j
至于cj , sj 当 jN,N1,,2N1的数值是
) 1 , , 2 , 1 (
) 1 , , 2 , 1 ( 0
2 2
N j
s s
N j
c c
s
v u c
j j N
j j N N
N N N