FFT 输出显示意外的对称性



我正在对信号运行 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 是输入数组长度的一半。虽然输出似乎仍然显示对称性

[1]https://i.stack.imgur.com/YwGVU.jpg

箭头指向我的哨子,它显示得很好,周围有很多噪音。中间的可能是谐波(我的口哨是废话)。但左右对称是显而易见的。

我使用的是 stm32f4 迪斯科板,样本来自板载 mems 麦克风,每个样本块(在本例中为 1024,给出 512 长度的 fft)通过 hann 窗口。

我正在使用托尼·迪科拉 spectrogramui.py 的修改版本进行可视化。

根据文档,arm_cmplx_mag_f32计算复杂信号的幅度。这就是为什么FFTMagBuf的大小必须是FFTBuf的一半:两个数组都包含实数,但复数样本由两个实数组成。这与FFT的模拟无关。

因此,输出信号的样本数与输入

信号完全相同。也就是说,你

计算一个真实信号的复数FFT,它具有某种对称性(你也需要考虑复共轭),然后取幅度,这是对称的。当然,剧情也是对称的。

最新更新