数学定义:
(详细参考:https://www.baidu.com/link?url=oYAuG2o-pia_U3DlF5n_MJZyE5YKfaVRUHTTDbM1FwM_kDTjGCxKpw_PbOK70jE2geVioprSVyPTTQuLwN-IhMH8NREmWSDnmcfQEY8w0kq&wd=&eqid=8244c46a0009451a000000035c0e2c39)
有限长序列可以通过离散傅里叶变换(DFT)将其频域也离散化成有限长 序列.但其计算量太大,很难实时地处理问题,因此引出了快速傅里叶变换 (FFT). 1965 年,Cooley 和 Tukey 提出了计算离散傅里叶变换(DFT)的快 速算法,将 DFT 的运算量减少了几个数量级。从此,对快速傅里叶变换(FFT) 算法的研究便不断深入,数字信号处理这门新兴学科也随 FFT 的出现和发 展而迅速发展。根据对序列分解与选取方法的不同而产生了 FFT 的多种算 法,基本算法是基2DIT 和基2DIF。FFT 在离散傅里叶反变换、线性卷积 和线性相关等方面也有重要应用。
快速傅里叶变换(FFT)是计算离散傅里叶变换(DFT)的快速算法。
DFT 的定义式为:
代码示例:
%fft示例:产生60Hz和150Hz带噪声的信号源,并用傅里叶变换方法查找主频信号 %产生带噪声的声源信号,并提取离散信号 t=0:0.001:0.6; %噪声信号的主频是60Hz和150Hz x=sin(2*pi*60*t)+sin(2*pi*150*t); y=x+2*randn(size(t)); plot(1000*t(1:50),y(1:50)) title('Signal Corrupted with Zero-Mean Random Noise') xlabel('time(ms)') grid on; %进行512点的快速傅里叶变换 Y=fft(y,512); %功率谱测量计算 Pyy=Y.*conj(Y)/512; f=1000*(0:256)/512; %绘制频谱图形 figure; plot(f,Pyy(1:257)) title('Frequency content of y') xlabel('frequency(Hz)') grid on;