#include "arm_math.h"
#include "arm_const_structs.h"
#define FFT_LENGTH 1024 //FFT??,???1024?FFT
float fft_inputbuf[FFT_LENGTH*2]; //FFT????
float fft_outputbuf[FFT_LENGTH]; //FFT????
for(i=0;i<FFT_LENGTH;i++)//??????
{
fft_inputbuf[2*i] = table[i];
fft_inputbuf[2*i+1]=0;
}
arm_cfft_f32(&arm_cfft_sR_f32_len1024,fft_inputbuf,0,1);
arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf,FFT_LENGTH);
for(i=0;i<FFT_LENGTH;i++)
{
fft_outputbuf[i] = fft_outputbuf[i]/FFT_LENGTH;
printf("%06f,\r\n",fft_outputbuf[i]);
}

本采样为1024个数据。
100Hz的采样率,分辨率为100/1024 = 0.0976Hz
第0个数据是基波.。
实际观察了下,浮点数对于处理器资源要求还是比较高,不是很实用。
本文详细介绍了使用1024点FFT进行信号处理的过程,包括数据准备、执行FFT、计算复数幅值及结果归一化。通过100Hz采样率的实例,展示了分辨率计算及基波位置的确定。实验发现,浮点数运算对处理器资源需求较高。
1338

被折叠的 条评论
为什么被折叠?



