我正在对一个信号运行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的长度是输入数组的一半。尽管如此,输出仍然显示出对称性。
箭头指向我的口哨,它显示得很好,周围有很多噪音。中间的可能是和声(我的口哨是垃圾)。但是左右对称是很明显的。
我使用的是一块mems板,样本来自板上的stm32f4麦克风,每个样本块(在本例中为1024,以提供512长度的快速傅立叶变换)都通过一个hann窗口。
我正在使用tony dicola的spectrogramui.py的一个修改版本来进行可视化。
发布于 2019-01-25 02:52:40
根据文档,arm_cmplx_mag_f32计算复杂信号的大小。这就是为什么FFTMagBuf必须是FFTBuf的一半大小:两个数组都保存实数,但复数样本是由两个实数组成的。这与FFT的对称性无关。
因此,输出信号的样本数与输入的样本数完全相同。
也就是说,你计算一个实信号的复数FFT,它具有某种对称性(你也需要考虑复共轭),然后你取它的幅度,它是对称的。当然,这个图也是对称的。
https://stackoverflow.com/questions/54281825
复制相似问题