完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
本帖最后由 mr.pengyongche 于 2013-4-30 03:15 编辑
///////////////////////////////////////////////// // Example For ICETEK-VC5416-EDU // // CTR Version : V4 // // Filename: FFT.c // // Project : FFT.pjt // // Version : 2.00 // // Write by: Daniel Hawk // // Company : Realtimedsp Co.Ltd. // // // // All Rights opened & no Onus 2005.06 // ///////////////////////////////////////////////// #include #define PI 3.1415926 #define SAMPLENUMBER 128 void InitForFFT(); void MakeWave(); int INPUT[SAMPLENUMBER],DATA[SAMPLENUMBER]; float fWaveR[SAMPLENUMBER],fWaveI[SAMPLENUMBER],w[SAMPLENUMBER]; float sin_tab[SAMPLENUMBER],cos_tab[SAMPLENUMBER]; void FFT(float dataR[SAMPLENUMBER],float dataI[SAMPLENUMBER]); main() { int i; InitForFFT(); MakeWave(); for ( i=0;i fWaveR=INPUT; fWaveI=0.0f; w=0.0f; } FFT(fWaveR,fWaveI); for ( i=0;i DATA=w; } while ( 1 ); // break point } 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;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; } for ( i=0;i dataR=dataI; dataI=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(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+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=sqrt(dataR*dataR+dataI*dataI); } } /* END FFT */ void InitForFFT() { int i; for ( i=0;i sin_tab=sin(PI*2*i/SAMPLENUMBER); cos_tab=cos(PI*2*i/SAMPLENUMBER); } } void MakeWave() { int i; for ( i=0;i INPUT=sin(PI*2*i/SAMPLENUMBER*3)*1024; } } [url=www.0404.cc] |
|
|
|
|
TMS320C6748 板卡设计中是否一定需要有SDRAM或者DDR
1958 浏览 0 评论
988 浏览 0 评论
3654 浏览 1 评论
【六岳微LY-F335开发板试用体验】epwm启动ADC并在OLED上显示结果
4493 浏览 0 评论
【六岳微LY-F335开发板试用体验】软件开发环境及调试下载
4541 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 07:12 , Processed in 0.608790 second(s), Total 66, Slave 48 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖