|
我的fft算法怎么不对啊? #include <iostream.h>#include <math.h>int main(void){int i,m=6,n,j,m1[6],m2[6],k,wcishu,a0add=0,a0mul=0,p,q,r;double a0real[64],a0imag[64],PI=3.14159...
|
|
|
我的fft算法怎么不对啊? #include <iostream.h> #include <math.h> int main(void) { int i,m=6,n,j,m1[6],m2[6],k,wcishu,a0add=0,a0mul=0,p,q,r; double a0real[64],a0imag[64],PI=3.14159265359,wlcos[64],wlsin[64],a1real[64],a1imag[64]; for(i=0;i<=63;i++) { a1real[i]=exp(i/8.0)/64; a1imag[i]=0; wlcos[i]=cos(-2*PI*i/64); wlsin[i]=sin(-2*PI*i/64); } for(j=1;j<=6;j++) { for(r=0;r<=63;r++) { a0real[r]=a1real[r]; a0imag[r]=a1imag[r]; } for(n=0;n<=63;n++) { k=n; for(i=5;i>=0;i--) { m1[i]=n%2; n=n/2; } n=k; wcishu=0; for(p=j,q=0;p>0;p--,q++) { m2[p-1]=m1[q]; wcishu+=m2[p-1]*pow(2,6-p); } m1[j-1]=0; a0add=0; for(i=5;i>=0;i--) { a0add+=m1[i]*pow(2,(5-i)); } m1[j-1]=1; a0mul=0; for(i=5;i>=0;i--) { a0mul+=m1[i]*pow(2,(5-i)); } a1real[n]=a0real[a0add]+(a0real[a0mul]*wlcos[wcishu])-(a0imag[a0mul]*wlsin[wcishu]); a1imag[n]=(a0imag[a0mul]*wlcos[wcishu])+(a0real[a0mul]*wlsin[wcishu])+a0imag[a0add]; cout<<a1real[n]<<"+"<<a1imag[n]<<"i"<<" "<<j<<" "<<n<<endl; } } return 0; } 弄的太复杂了,直接在MATLAB中有fft 函数使用就好了
|
|
|
|