|
硬汉哥,小白请教一下,
我现在需要做两个正弦波的相位差,
x=SIN(2*PI* 64),初始相位为0;
算4096个点的FFT,分辨率为1HZ,然后求出幅值,
通过比较法;找到幅值最大的那个点对应的频率。
然后在将频率带入到FFT的输出数组算出来相位为-87度
代码如下:
for (i=0;i<= FFT_LENGTH ; i++)
{
fft_inputbuf [2*i ] = data;
fft_inputbuf [2*i+1] = 0;
}
arm_cfft_radix4_f32(&scfft,fft_inputbuf); //FFT计算(基4)
arm_cmplx_mag_f32(fft_inputbuf,fft_outputbuf_amp,FFT_LENGTH); //算出幅值
dc_vaule = fft_outputbuf_amp[0] /4096;//算出直流分量
for (i=0;i<= FFT_LENGTH/2 ; i++)
{
fft_outputbuf_amp = fft_outputbuf_amp[i+1] ; //去掉直流分量,去前2047个点
}
arm_max_f32(fft_outputbuf_amp,2047,&max_seq_value,&mean_value_seq); //在2047个点中找到幅值最大的那个点
phase = atan2(fft_inputbuf[(mean_value_seq+1)*2+1], fft_inputbuf[(mean_value_seq+1)*2]); //算出幅值最大的点的相位,
|
|