void dft(float x[],float XR[],float XI[],int N)
{
int k,n;
//float t;
for(k=0;k<N;k++)
{
XR[k]=0.0;
XI[k]=0.0;
za=_IQ20(XR[k]);
zb=_IQ20(XI[k]);
for(n=0;n<N;n++)
{
/*t=_IQ20mpy(_IQ20(PI),_IQ20(n));
t=_IQ20mpy(t,_IQ20(k));
t=_IQ20div(t,_IQ20(N));
//t=2.0*PI*n*k/N;
result=_IQ20mpy(_IQ20(x[n]),_IQ20cos(t));
za=result+za;
result=_IQ20mpy(_IQ20(x[n]),_IQ20sin(t));
zb=zb-result;*/
//XR[k]=x[n]*cos(t)+XR[k];
//XI[k]=XI[k]-x[n]*sin(t);
}
za=_IQ20mag(za,zb);
//XR[k]=sqrt(XR[k]*XR[k]+XI[k]*XI[k]);
XR[k]=_IQ20toF(za);
XI[k]=_IQ20toF(zb);
}
return;
}
把第二个for循环里面的东西注释掉就可以允许了,但取消注释就会跑飞,为什么

