一、FFT的意义
DFT虽然实现了FT的计算机计算,但是计算量大,不适合实时的数字信号处理。FFT算法的出现,使DFT的计算效率更高,速度更快。
二、FFT与DFT的关系
从FT到DFT经过了数字角频率w的离散化,由此带来了一些数学公式的改写。而FFT是DFT算法上的突破,可以说数学理论上与DFT是一样的。可以认为,FFT就是DFT的一种快速好用的计算方法,FFT替代了定义法计算的笨拙,如此而已。正因为如此,所以可以看到FFT与DFT的运算结果是相同的。
三、matlab实验
1、程序
L=4; %原离散信号有8点 n=[0:1:L-1] %原信号是1行8列的矩阵 xn=[1 1 1 1]; %构建原始信号,为指数信号 subplot(2,1,1); stem(n,xn); title('原信号'); N=16; i=[0:1:N-1]; Xk=fft(xn,N); subplot(2,1,2); stem(i,abs(Xk)); title('FFT变换');
说明:
程序实现FFT的部分是直接调用matlab函数库中的fft()函数:
Xk=fft(xn,N);
至于它的算法详细实现,本人还未研究,待哪天空闲时再来补充。
2、实验结果
说明:从实验结果中可以看出,FFT的计算结果与DFT完全一样,也说明了FFT只是DFT的一种快速运算方法。
西电《数字信号处理》第三版