|
已实现加速度计对数据采集,想要完成实时的FFT分析,可采用什么具体方法
以下代码可否完成FFT完成数据最高峰及次高峰的频率提取
int i;
uint16_t max;
int fmax,f2max;
for(i=0;i<1024;i++)
{
acc_data();
input=(d+e+f)/2048;//式中d、e f的实现方法为 for(i=0;i<1024;i++){ d=aa;e=ab;f=ac;}
}
/* 计算1024点FFT
output:输出结果,高16位是虚部,低16位是实部。
input :输入数据,高16位是虚部,低16位是实部。
第三个参数必须是1024。
*/
cr4_fft_1024_stm32(output,input,1024);
/*求幅值*/
PowerMag(1024);
// /*打印输出结果*/
// for(i=0;i<1024;i++)
// {
// printf("%d\r\n",Mag);
// }
max=Mag[0];
for(i=0;i<512;i++)
{
if(Mag>max)
{max=Mag;}
}
for(i=0;i<512;i++)
{
if(Mag==max)
{
fmax=i;
f2max=fmax*2;
}break;
}
|
|