資源簡介
CCS 3.3下編譯通過,FFT算法的設計過程與驗證程序,采用C語言實現。
代碼片段和文件信息
#include?“math.h“
#define?PI?3.1415926
#define?SAMPLENUMBER?128
void?InitForFFT();
void?MakeWave();
void?FFT();
int?INPUT[SAMPLENUMBER]DATA[SAMPLENUMBER];
float?fWaveR[SAMPLENUMBER]fWaveI[SAMPLENUMBER]w[SAMPLENUMBER];
float?sin_tab[SAMPLENUMBER]cos_tab[SAMPLENUMBER];
main()
{
int?i;
InitForFFT();
MakeWave();
for?(?i=0;i {
fWaveR[i]=INPUT[i];
fWaveI[i]=0.0f;
w[i]=0.0f;
}
FFT(fWaveRfWaveI);
for?(?i=0;i {
DATA[i]=w[i];
}
while?(?1?); //?break?point
}
void?FFT(float?dataR[SAMPLENUMBER]float?dataI[SAMPLENUMBER])
{
int?x0x1x2x3x4x5x6xx;
int?ijkbpL;
float?TRTItemp;
/**********?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;L<=7;L++?)
{?/*?for(1)?*/
b=1;?i=L-1;
while?(?i>0?)?
{
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(27-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+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;i {?
w[i]=sqrt(dataR[i]*dataR[i]+dataI[i]*dataI[i]);
}
}?/*?END?FFT?*/
void?InitForFFT()
{
int?i;
for?(?i=0;i {
sin_tab[i]=sin(PI*2*i/SAMPLENUMBER);
cos_tab[i]=cos(PI*2*i/SAMPLENUMBER);
}
}
void?MakeWave()
{
int?i;
for?(?i=0;i {
INPUT[i]=sin(PI*2*i/SAMPLENUMBER*3)*1024;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????260??2005-07-18?20:17??Lab0503-FFT\Debug.lkf
?????文件????????260??2005-07-18?20:17??Lab0503-FFT\Debug.lkv
?????文件???????2207??2005-07-18?20:17??Lab0503-FFT\FFT.c
?????文件???????1167??2007-05-09?14:14??Lab0503-FFT\FFT.paf
?????文件????????870??2007-05-09?14:14??Lab0503-FFT\FFT.pjt
?????文件??????13579??2005-07-18?20:48??Lab0503-FFT\FFT.wks
?????文件????????334??2007-05-09?14:14??Lab0503-FFT\c6713.cmd
?????文件????????134??2005-07-18?20:35??Lab0503-FFT\cc_build_Debug.log
?????文件???????5794??2005-07-18?20:17??Lab0503-FFT\Debug\FFT.map
?????文件???????7686??2005-07-18?20:17??Lab0503-FFT\Debug\FFT.obj
?????文件??????17569??2005-07-18?20:17??Lab0503-FFT\Debug\FFT.out
?????目錄??????????0??2008-04-06?08:57??Lab0503-FFT\Debug
?????目錄??????????0??2008-04-06?08:57??Lab0503-FFT
-----------?---------??----------?-----??----
????????????????49860????????????????????13
- 上一篇:使用C語言編寫的病房管理系統
- 下一篇:數字電位器C語言程序
評論
共有 條評論