我正在使用 CMSIS DSP FFT 函数将已知信号从时域转换为频域。有问题的信号是 1 KHz 正弦波,峰峰值幅度为 1V,直流偏移为 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 库以某种方式执行了缩放功能,我在代码执行中进行了检查,但无处可见/执行。欢迎任何调试想法。