我正在对信号运行cfft。输出似乎显示出对称性。我知道 fft是对称的,但是代码
arm_cfft_f32(&arm_cfft_sR_f32_len512, &FFTBuf[0], 0, 1);
arm_cmplx_mag_f32(&FFTBuf[0], &FFTMagBuf[0], FFT_LEN);
对此进行了说明,因为FFTMagBuf是输入数组长度的一半。 虽然输出仍然显示对称性
箭头指向我的哨子,哨声很好,周围有很多杂音。 中间一个可能是谐波(我的哨子是胡扯)。但是左右对称很明显。
我正在使用stm32f4迪斯科板,并且样本来自板载mems麦克风,并且每个样本块(在这种情况下为1024,以提供ftf的长度为512)是通过hann窗口传递的。 / p>
我正在使用tony dicola的spectrogramui.py的修改版进行可视化。
答案 0 :(得分:0)
根据文档arm_cmplx_mag_f32,计算复杂信号的幅度。这就是FFTMagBuf必须是FFTBuf大小的一半的原因:两个数组都包含实数,但是复杂的样本是由两个实数组成的。它与FFT的仿真无关。
因此,输出信号与输入信号的采样数完全相同。
也就是说,您计算具有某种对称性的实际信号的复数FFT(您也需要考虑复数共轭),并采用对称的幅度。当然,该图也是对称的。