相同输入信号的CMSIS DSP FFT输出对于FFT点的数量是不同的

时间:2018-03-10 02:52:48

标签: signal-processing fft cmsis

我正在使用CMSIS DSP FFT功能将已知信号从时域转换到频域。所讨论的信号是1KHz的峰 - 峰幅度为1V的正弦波,其DC偏移为1.25V。我用16位ADC对10 KHz的输入信号进行采样,然后在浮点上对Cortex M4F MCU进行处理。

当我运行1024点FFT时,DC值在Bin-0处出现为~1.24。当我为2048点FFT运行相同的信号时,DC值约为2.5。所以我运行了512点FFT,值变为一半或~0.62。为了仔细检查我的信号,我在Matlab中做了同样的事情,无论我使用什么FFT点,Matlab都将Bin-0或DC显示为~1.25。

似乎来自ARM的CMSIS DSP库以某种方式执行了缩放功能,我在代码执行中检查了它,无处可见。欢迎任何调试的想法。

1 个答案:

答案 0 :(得分:0)

看起来你的输出没有缩放。这很可能是出于性能原因而完成的,因为并非所有使用傅立叶变换都需要缩放输出,而CMSIS代码预计将在有限功率的嵌入式设备上执行。

CMSIS库中Fast Real FFT实现(User函数)之前的注释证实了这一点:

  

正向和反向实数FFT函数应用标准FFT   缩放;在正向变换和1 / fftLen缩放上没有缩放   逆变换。

要解决此问题,请手动应用缩放系数。