700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > c语言实现1024点fft程序 C语言1024点快速傅里叶变换(FFT)程序 最好经过优化 执行速度快...

c语言实现1024点fft程序 C语言1024点快速傅里叶变换(FFT)程序 最好经过优化 执行速度快...

时间:2019-07-23 00:04:57

相关推荐

c语言实现1024点fft程序 C语言1024点快速傅里叶变换(FFT)程序 最好经过优化 执行速度快...

voidfft(){intnn,n1,n2,i,j,k,l,m,s,l1;floatar[1024],ai[1024];//实部虚部floata[2050];floatt1,t2,x,y;floatw1,w2,u1,u2,z;floatfsin[10]={0.000000,1.000000,0.707107,0.3826834,0.1950903,0.09801713,0.04906767,0.02454123,0.01227154,0.00613588,};//优化floatfcos[10]={-1.000000,0.000000,0.7071068,0.9238796,0.9807853,0.99518472,0.99879545,0.9996988,0.9999247,0.9999812,};nn=1024;s=10;n1=nn/2;n2=nn-1;j=1;for(i=1;i<=nn;i++){a[2*i]=ar[i-1];a[2*i+1]=ai[i-1];}for(l=1;l<n2;l++){if(l<j){t1=a[2*j];t2=a[2*j+1];a[2*j]=a[2*l];a[2*j+1]=a[2*l+1];a[2*l]=t1;a[2*l+1]=t2;}k=n1;while(k<j){j=j-k;k=k/2;}j=j+k;}for(i=1;i<=s;i++){u1=1;u2=0;m=(1<<i);k=m>>1;w1=fcos[i-1];w2=-fsin[i-1];for(j=1;j<=k;j++){for(l=j;l<nn;l=l+m){l1=l+k;t1=a[2*l1]*u1-a[2*l1+1]*u2;t2=a[2*l1]*u2+a[2*l1+1]*u1;a[2*l1]=a[2*l]-t1;a[2*l1+1]=a[2*l+1]-t2;a[2*l]=a[2*l]+t1;a[2*l+1]=a[2*l+1]+t2;}z=u1*w1-u2*w2;u2=u1*w2+u2*w1;u1=z;}}for(i=1;i<=nn/2;i++){ar[i]=a[2*i+2]/nn;ai[i]=-a[2*i+3]/nn;a[i]=4*sqrt(ar[i]*ar[i]+ai[i]*ai[i]);//幅值}}

阅读全文 >

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。