快速傅里叶变换(FFT)

一、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的一种快速运算方法。

参考:用matlab对信号进行傅里叶变换

        西电《数字信号处理》第三版

原文地址:https://www.cnblogs.com/amanlikethis/p/3506696.html