快速傅里叶变换
傅里叶分析是一个很美妙的理论,而且它还很实用。在频域分析波形可以很好的将信号分离开来,相反的过程又能回到时域中。处于物理和数学的缘故,指定实用指数函数,我们感觉最主要的原因就是:如果我们对
eikx
求导、积分或将
x
变成
我们想要展示
Fc,F−1y
计算非常快,关键点就是
F4
到
F2
的关系:
F4
包含
w4=i
,1的四次根,
F∗2
包含
w2=−1
,1的平方根。注意
F∗2
有一半的元素都是零,做两次
2×2
的变换仅需要直接进行
4×4
变换时间的一半,如果
64×64
变化可以用两个
32×32
变换替换,那么运行时间将减少一般。之所有能够如此,原因在于
w64
和
w32
之间存在一个简单的联系:
从圆上的点看,32次根是64次根的两倍,如果
w64=1
,那么
(w2)32=1
,如果
m
是
FFT
的速度取决于像
210=1024
这样的合数。如果没有快速变换,那么
F
乘以
我们现在看看
y=Fnc
(一个有
n
个元素的向量)如何从两个只有一半长度的向量中恢复回来。第一步是将
利用这两个向量,我们变换 y′=Fmc′,y′′=Fmc′′ ,这两个乘法的矩阵 Fm 比原来要小。现在问题变成如何从 y′,y′′ 中恢复 y ,Cooley和Tukey注意到了如何求解这个问题:
33、向量
因此第三步就是:将
c
分成
这种不断分半的想法可以一直重复进行,例如从
F1024
到
F512
再到
F256
,如果我们从
n=2ℓ
开始到一直到
n=1
,那么最终的计数是
12nℓ
。另一种计算方法是:从
n=2ℓ
到
n=1
需要
ℓ
步,每一步需要
n/2
次乘法,相当于是
Fn
的一个分解:
所需的代价近似是线性的,傅里叶分析完全可以用FFT进行转换,为了证实方程(13),我们将
yi
分成奇数项和偶数项:
右边的两个和式分别有
m=12n
项。因为
w2n=wm
,所以这两个和式子可以表示为:
在方程(13)的第二部分, j+m 部分有一个符号的变化:
在和式里面,因为 wkmm=1k=1 ,所以 wk(j+1)m 依然为 wkjm ;在外面,因为 wmn=e2πim/n=eπi=−1 ,所以 wj+mn=−wjn 。
FFT的想法用其他的素数
n
代替后就得到一个新版本,如果
例1:从
n=4
到
n=2
为
因为每步都是线性的,所以从一个矩阵开始,这些矩阵的乘积也必须是
F4
:
我们可以看出中间的是两个
F2
,右边是将
c
分成
FFT
FFT的第一步是将 Fn 的乘法变成两个 Fm 的乘法,偶数项 (c0,c2) 从奇数项 (c1,c3) 中分离出来,如1给出了 n=4 时的流图(flow graph)。对于 n=8 ,只要用 F2 代替 F4 即可。新元素 w4=i 是老元素 w=w8=e2πi/8 的平方,流图给出了 c 进入FFT的顺序。
每一步需要
图2