0

我正在对信号运行 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://imgur.com/K0uMDAm

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

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

我正在使用 tony dicola 的 spectrogramui.py 的修改版本进行可视化。

4

1 回答 1

1

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

因此,输出信号具有与输入完全相同的样本数。

也就是说,您计算具有某种对称性的实信号的复 FFT(您也需要考虑复共轭),然后取对称的幅度。当然,情节也是对称的。

于 2019-01-24T18:52:39.950 回答