如题:stm32f103使用dsp库进行FFT计算数据出现很多错误,请大神们给点建议:
我用函数产生256个数据组成一组正弦波,运行FFT后发现很多数据出错,请问这种情况如何解决?
下面是我的代码:
u16 fs=1000;
float f=51.1234;
float a=1.2345;
float ph=30.123;
float dc=0.123;
float z1,z2,Z1,Z2,ka,r,fo,ao,pho;
float_t Y1;
uint32_t k;
u16 t=0;
float x[N],xfft[N],y[N];
for(t=0;t<N;t++)
{
x[t]=a*sin(2*PI*f*t/fs+ph*PI/180)+dc; //波形产生
}
cr4_fft_256_stm32(&xfft, &x, N);// FFT计算
arm_abs_f32(xfft,y,N);
arm_max_f32(y,N,&Y1,&k);
k =k+1;
Z1=xfft[k]-(xfft[k-1]+xfft[k+1])/2;
Z2=xfft[k+1]-(xfft[k]+xfft[k+2])/2;
arm_abs_f32(&Z1,&z1,1);
arm_abs_f32(&Z2,&z2,1);
ka=z1/z2;
r = (2-ka)/(1+ka);
fo=(k-1+r)*fs/N;
ao=(2*PI*r*(1-r*r)*z1)/(N*sin(r*PI));
波形产生的数据:
FFT计算后的数据:(红框的都是一场数据)
FFT计算数据
请问这个有人遇到过吗?这个要怎么处理才能避免呢?
|