在论坛看见原子上传的一个关于fft程序 我就把这个程序放到我的代码里边
[mw_shl_code=c,true]void FFT(compx *xin,u16 N)
{
u16 f,m,LH,nm,i,k,j,L;
u16 p;
u16 le,B,ip;
compx ws,t;
LH=N/2;
f=N;
for(m=1;(f=f/2)!=1;m++);
nm=N-2;
j=N/2;
for(i=1;i<=nm;i++)
{
if(i<j){t=xin[j];xin[j]=xin;xin=t;}
k=LH;
while(j>=k){j=j-k;k=k/2;}
j=j+k;
}
for(L=1;L<=m;L++)
{
le=mypow(2,L);
B=le/2;
for(j=0;j<=B-1;j++)
{
p=mypow(2,m-L)*j;
ws.real=cos_tab[p];
ws.imag=sin_tab[p];
for(i=j;i<=N-1;i=i+le)
{
ip=i+B;
t.real=xin[ip].real*ws.real-xin[ip].imag*ws.imag;
t.imag=xin[ip].real*ws.imag+xin[ip].imag*ws.real;
xin[ip].real=xin.real-t.real;
xin[ip].imag=xin.imag-t.imag;
xin.real=xin.real+t.real;
xin.imag=xin.imag+t.imag;
}
}
}
}原子的转换程序[/mw_shl_code]
放到我自己的程序里边
compx rbuf[600];
FFT(rbuf,512); 进去的是正确的数据 波形也测过 然后经过这个函数一转换 发现除了第一个和最后一个有变化之外 其余的数据基本都是一样的 求大神指导 这是为什么 |