鸡蛋厂家
免费服务热线

Free service

hotline

010-00000000
鸡蛋厂家
热门搜索:
技术资讯
当前位置:首页 > 技术资讯

用C语言实现FFT算法

发布时间:2020-07-01 02:26:37 阅读: 来源:鸡蛋厂家

/*****************fft programe*********************/#include typedef.h #include math.h

本文引用地址: compx EE(struct compx b1,struct compx b2){ struct compx b3 ; al=al*ag*ag ; ag=al*ag+ag*al ; return(b3);}

void FFT(struct compx*xin,int N){ int f,m,nv2,nm1,i,k,j=1,l ; /*int f,m,nv2,nm1,i,k,j=N/2,l;*/ struct compx v,w,t ; nv2=N/2 ; f=N ; for(m=1;(f=f/2)!=1;m++) { ; } nm1=N-1 ; /*变址运算*/ for(i=1;i=nm1;i++) { if(ij) { t=xin[j]; xin[j]=xin[i]; xin[i]=t ; } k=nv2 ; while(kj) { j=j-k ; k=k/2 ; } j=j+k ; } { int le,lei,ip ; float pi ; for(l=1;l=m;l++) { le=pow(2,l); // 这里用的是L而不是1 !!!! lei=le/2 ; pi=3.14159 ; al=1.0 ; ag=0.0 ; al=cos(pi/lei); ag=-sin(pi/lei); for(j=1;j=lei;j++) { /*double p=pow(2,m-l)*j; double ps=2*pi/N*p; al=cos(ps); ag=-sin(ps);*/ for(i=j;i=N;i=i+le) { /* al=cos(ps); ag=-sin(ps);*/ ip=i+lei ; t=EE(xin[ip],v); xin[ip].real=xin[i].al ; xin[ip].imag=xin[i].ag ; xin[i].real=xin[i].real+al ; xin[i].imag=xin[i].imag+ag ; } v=EE(v,w); } } } return ;}

/*****************main programe********************/

#includemath.h>#includestdio.h>#includestdlib.h>#include typedef.h

float result[257];struct compx s[257];int Num=256 ;const float pp=3.14159 ;

main(){ int i=1 ; for(;i0x101;i++) { s[i].real=sin(pp*i/32); s[i].imag=0 ; } FFT(s,Num); for(i=1;i0x101;i++) { result[i]=sqrt(pow(s[i].real,2)+pow(s[i].imag,2)); }}

c语言相关文章:c语言教程

淄博防静电工作服制做

订做T恤

潍坊定做西服

长春工服定做