#include #include void fft(float *xr, float *xi, int nr, float T); int IBIT(int j, int m); void main ( ) { float x[500]; int i,j,k,m; float ra[512],ri[512],a[500]; FILE *fp1,*fp2; fp1=fopen(\"nose59-500\ fp2=fopen(\"gongkang\ for(i=0; i<25; i++) //选择第24条数据 { for(m=0;m<512;m++) { ra[m]=0; //将ra[512],ri[512]数据设为0 ri[m]=0; } fread(&x[0],4,500,fp1); } for(j=0;j<500;j++) { ra[j]=x[j]; //将数组x的所有值赋于ra中 } fft(ra,ri,9,1.0); for(k=0;k<256;k++) { a[k]=(float)sqrt(ra[k]*ra[k]+ri[k]*ri[k]); fprintf(fp2,\"%f\\n\ //将数组a中的值输出并保存在文件fp中 } fclose(fp1); fclose(fp2); } void fft(float *xr, float *xi, int nr, float T) { int i, j, k, l, n, n2, nr1, i1, j1, k2, k1n2; float c, s, p, tr, ti, trc, tic, ars; n=(int)(pow(2,nr)); n2=n/2; nr1=nr-1; k=0; for(l=1; l<=nr; l++) { loop1: for(j=1; j<=n2; j++) { k2=k/(int)(pow(2,nr1)); p=(float)(IBIT(k2,nr)); ars=(float)(6.2831852*p/(float)(n)); c=(float)(cos(ars)); s=(float)(sin(ars)); k1n2=k+n2; tr=xr[k1n2]*c+xi[k1n2]*s*T; ti=xi[k1n2]*c-xr[k1n2]*s*T; xr[k1n2]=xr[k]-tr; xi[k1n2]=xi[k]-ti; xr[k]=xr[k]+tr; xi[k]=xi[k]+ti; k++; } k+=n2; if(k else { k=0; nr1=nr1-1; n2 /=2; } } for(j=1; j<=n; j++) { i=IBIT(j-1,nr)+1; if(i>j) { j1=j-1; i1=i-1; trc =xr[j1]; tic =xi[j1]; xr[j1]=xr[i1]; xi[j1]=xi[i1]; xr[i1]=trc; xi[i1]=tic; } } if(T<0.0) { for(j=0; j<=n; j++) { xr[j]/=n; xi[j]/=n; } } } int IBIT(int j, int m) { int i, it, j1, j2; it=0; j1=j; for(i=1; i<=m; i++) { j2=j1/2; it=it*2+(j1-2*j2); j1=j2; } return it; } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- ovod.cn 版权所有 湘ICP备2023023988号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务