《FFT算法C语言程序代码(共2页).doc》由会员分享,可在线阅读,更多相关《FFT算法C语言程序代码(共2页).doc(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上DIT-基2FFT的浮点C语言程序:1、 生成旋转因子,复数结构,旋转因子Wn=exp(-j*2*pi/N)/twiFactor指向旋转因子矩阵的指针/wLenFFT的长度Struct complexData /定义一个复数结构 float re; float im; ;Void gen_w_r2(struct complexData *twiFactor,int wLen) int iFactor; float stepFactor; stepFactor=2.0*pi/wLen; for(iFactor=0;iFactor1);iFactor+) twiFacto
2、riFactor.re=cos(stepFactor*iFactor); twiFactoriFactor.im=sin(stepFactor*iFactor); /Wn=exp(j*2*pi*n/N),n=0,1,(N/2-1) 2、在运行FFT之前,对输入序列进行倒序变换,代码如下:/bitRevData指向位变换序列的指针/revLenFFT长度Void bit_rev(struct complexData *bitRevData,int revLen) struct complexData tempRev; int iRev,jRev,kRev,halfLen; halfLen=rev
3、Len1;jRev=0; for(iRev=0;iRev(revLen-1);iRev+) If(iRevjRev) tempRev=bitRevDatajRev; bitRevDatajRev=bitRevDataiRev; bitRevDataiRev= tempRev; kRev=halfLen; while(kRev1; 3、FFT计算。有3个循环体,分别为a内循环,b中间循环,c外循环,内循环实现蝶形结计算,循环a和b完成所有的蝶形结运算,而循环c则表示完成FFT算法所需要的级数。/x输入数据的指针/w旋转因子指针/nFFT的长度void sp_cfftr2_dit(float *x
4、,float *w,short n) short n2,ie,ia,i,j,k,m; float rtemp,itemp,c,s; n2=n; ie=1; for(k=n;k1;k=1) /loop c n2=1;ia=0; for(j=0;jie;j+) /loop b c=w2*j; s=w2*j+1; for(i=0;in2;i+) /loop a m=ia+n2; rtemp=c*x2*m+s*x2*m+1; itemp= c*x2*m+1-s*x2*m; x2*m=x2*ia-rtemp; x2*m+1=x2*ia+1-itemp; x2*ia=x2*ia+rtemp; x2*ia+1=x2*ia+1+itemp; ia+; ia+=n2; ie=1; 专心-专注-专业