我自己的一些详细标注,有利于深入了解 FFT,后面附加几位网友对 FFT 的理解及源代码,让广大朋友更迅速的掌握 FFT #include "DSP281x_Device.h" // DSP281x Headerfile Include File,添加所有头文件 #include "DSP281x_Examples.h" // DSP281x Examples Include File,条件编译而已 #include "f2812a.h" //一些变量的宏定义而已 #include"math.h" #define PI 3.1415926 //前变后常 #define SAMPLENUMBER 128 //#define SAMPLENUMBER 512 void InitForFFT(); void MakeWave(); //void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]); int INPUT[SAMPLENUMBER],DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER],fWaveI[SAMPLENUMBER],w[SAMPLENUMBER]; float sin_tab[SAMPLENUMBER],cos_tab[SAMPLENUMBER]; //逐级计算 FFT,一级一级递推 void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]) { int x0,x1,x2,x3,x4,x5,x6,xx; int i,j,k,b,p,L; float TR,TI,temp; /********** following code invert sequence ************///倒序 for ( i=0;i0 ) { b=b*2; i--; } /* b= 2^(L-1) */ for ( j=0;j<=b-1;j++ ) /* for (2) */ { p=1; i=7-L; while ( i>0 ) /* p=pow(2,7-L)*j; */ { p=p*2; i--; } p=p*j; for ( k=j;k<128;k=k+2*b ) /* for (3) */ { TR=dataR[k]; TI=dataI[k]; temp=dataR[k+b]; dataR[k]=dataR[k]+dataR[k+b]*cos_tab[p]+dataI[k+b]*sin_tab[p]; dataI[k]=dataI[k]-dataR[k+b]*sin_tab[p]+dataI[k+b]*cos_tab[p]; dataR[k+b]=TR-dataR[k+...