void FFT(float dataR[],float dataI[]){int x0,x1,x2,x3,x4,x5,x6;int L,j,k,b,p;float TR,TI,temp;unsigned char i,xx;/********** following code invert sequence ************/for(i=0;i{ x0=x1=x2=x3=x4=x5=x6=0;x0=i&0x01; x1=(i/2)&0x01; x2=(i/4)&0x01; x3=(i/8)&0x01;x4=(i/16)&0x01; x5=(i/32)&0x01; x6=(i/64)&0x01;xx=x0*64+x1*32+x2*16+x3*8+x4*4+x5*2+x6;dataI[xx]=dataR[i];}for(i=0;i{ dataR[i]=dataI[i]; dataI[i]=0; }/************** following code FFT *******************/for(L=1;Lb=1; i=L-1;while(i>0) {b=b*2; i--;} /* b= 2^(L-1) */for(j=0;j{ 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{ 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+b]*cos_tab[p]-dataI[k+b]*sin_tab[p];dataI[k+b]=TI+temp*sin_tab[p]-dataI[k+b]*cos_tab[p];} /* END for (3) */} /* END for (2) */} /* END for (1) */for(i=0;iw[i]=sqrt(da...

>> 阅读全文