实验一: 用 FFT作谱分析 实验目的: (1) 进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法, 所以FFT的运算结果必然满足DFT的基本性质)
(2) 熟悉 FFT算法原理和FFT子程序的应用
(3) 学习用 FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用 FFT
实验原理: DFT的运算量: 一次完整的DFT运算总共需要2N 次复数乘法和(1)N N 复数加法运算,因而直接计算DFT时,乘法次数和加法次数都和2N 成正比,当 N很大时,运算量很客观的
例如,当 N=8时,DFT运算需 64位复数乘法,当 N=1024时,DFT运算需 1048576次复数乘法
而 N的取值可能会很大,因而寻找运算量的途径是很必要的
FFT算法原理: 大多数减少离散傅里叶变换运算次数的方法都是基于n kNW的对称性和周期性
(1)对称性 ()*()kNnknknNNNWWW (2)周期性 knNknnNkn kNNNNNWWWW 由此可得 ()()/ 2(/ 2 )1n NkNn kn kNNNNNkNkNNWWWWWW 这样: 1
利用第三个方程的这些特性,DFT运算中有些项可以合并; 2
利用n kNW的对称性和周期性,可以将长序列的DFT分解为短序列的DFT
前面已经说过,DFT的运算量是与2N 成正比的,所以N越小对计算越有利,因而小点数序列的DFT比大点数序列的DFT运算量要小
快速傅里叶变换算法正是基于这样的基本思路而发展起来的,她的算法基本上可分成两大类,即按时间抽取法和按频率抽取法
我们最常用的是2 MN 的情况,该情况下的变换成为基2快速傅里叶变换
完成一次完整的FFT计算总共需要2lo g2NN 次复数乘法运算和