快速傅里叶变换
1 简介
对于信号而言,它的一些特征需要在频域当中才能体现,因此我们需要通过某种方式将信号从时域转换到频域,而傅里叶变换就是其中之一。在计算机当中,我们常用的是离散傅里叶变换。而快速傅里叶变换(FFT)是为了加快傅里叶变换而提出的一种算法。
2 离散傅里叶变换
首先来看傅里叶变换:
X ( w ) = ∫ − ∞ ∞ x ( w ) e − i w t d t X(w)=\int_{-\infty}^{\infty}x(w)e^{-iwt}dt X(w)=∫−∞∞x(w)e−iwtdt
下面来看离散傅里叶变换。对x(t)以周期T进行采样,得到N个采样点,则每个采样点的离散傅里叶变换公式为:
X ( n ) = ∑ k = 0 N − 1 x ( k ) e − i 2 π N k n n = 0 , 1 , 2... N − 1 X(n)=\sum_{k=0}^{N-1}x(k)e^{-i\frac{2\pi}{N}kn}\space\space\space n=0,1,2...N-1 X(n)=k=0∑N−1x(k)e−iN2πkn n=0,1,2...N−1
因为 e − i 2 π N e^{-i\frac{2\pi}{N}} e−iN2π是一个关于N的数,因此,令 W N = e − i 2 π N W_N=e^{-i\frac{2\pi}{N}} WN=e−iN2π,公式如下:
X ( n ) = ∑ k = 0 N − 1 x ( k ) W N k n n = 0 , 1 , 2... N − 1 X(n)=\sum_{k=0}^{N-1}x(k)W_{N}^{kn}\space\space\space n=0,1,2...N-1 X(n)=k=0∑N−1x(k)WNkn n=0,1,2...N−1
由上述公式可知,要计算N个点的离散傅里叶变换的结果,需要进行 N 2 N^2 N2次乘法, N ( N − 1 ) N(N-1) N(N−1)次加法,直接计算的计算量太大,所以我们要用到快速傅里叶变换来减少计算量。
3 快速傅里叶变换( F F T FFT FFT)
在了解快速傅里叶变换之前,我们需要先了解一下 W N W_N WN的一些性质。
-
性质1-周期性:
W N n k = W N ( n + N ) k = W N ( k + N ) n W_N^{nk}=W_N^{(n+N)k}=W_N^{(k+N)n} WNnk=WN(n+N)k=WN(k+N)n -
性质2-对称性:
W N n k = W N − n k = W N ( N − k ) k = W N ( N − k ) n W_N^{nk}=W_N^{-nk}=W_N^{(N-k)k}=W_N^{(N-k)n} WN