0 引言
傅立叶变换是一种将信号从时域转变为频域表示的变换形式,它是数字信号处理中对信号进行分析时经常采用的一种方法。信号的一些特性在时域总是表现得不明显,通过傅里叶算法,将其变换到频域,其特性就一目了然。例如,来自供电系统的干扰在时域上总是不易识别,但是在频域上就可以很清晰地看到50~60 Hz的离散谐波。
在计算机系统中,实际上是以离散傅立叶变换(DFT)的方式处理数据。由于DFT的运算量比较大,并不适用于嵌入式控制系统,所以实际应用中常使用DFT 的快速算法一快速傅立叶变换(FFT)。虽然FFT 比DFT的计算量减少了很多,但用普通单片机来实现FFT多点、实时运算还是比较困难的。DSP(数字信号处理器)具有运算速度快和精度高的特点,恰好满足FFT的要求,能较好地解决这个问题。
1 快速傅里叶变换的原理
非周期性连续时间信号x(t)的傅里叶变换可以表示为
式中计算出来的是信号x(t)的连续频谱。但是,在实际的控制系统中能够得到的是连续信号x(t)的离散采样值x(nT)。因此需要利用离散信号x(nT)来计算信号x(t)的频谱。
有限长离散信号x(n),n=0,1,…,N-1的DFT定义为:
可以看出,DFT需要计算大约N2次乘法和N2次加法。当N较大时,这个计算量是很大的。利用WN的对称性和周期性,将N点DFT分解为两个N/2点的 DFT,这样两个N/2点DFT总的计算量只是原来的一半,即(N/2)2+(N/2)2=N2/2,这样可以继续分解下去,将N/2再分解为N/4点 DFT等。对于N=2m 点的DFT都可以分解为2点的DFT,这样其计算量可以减少为(N/2)log2N次乘法和Nlog2N次加法。图1为FFT与DFT-所需运算量与计算点数的关系曲线。由图可以明显看出FFT算法的优越性。