我有一个关于信号处理的问题。具有嵌入式设计和代码经验,但 DSP 处于新领域。
到目前为止,我正在使用运行良好的 CMSIS DSP 库函数。我正在采样低频信号。使用定时器中断,采样率比我期望看到的最高信号高 40 倍。我处理的“缓冲区”大小为 2048。我首先应用低通 FIR ( arm_fir_f32
),然后应用到arm_cfft_f32
函数,这样我就可以计算频率信息。它可以很好地工作到频率为 +/- 1Hz 的点。但是,我希望能达到 +/-200mHz。
我知道我需要降低端点的功率(噪声),汉恩窗应该是最好的(更好的?)选择。因此我的问题:
在什么时候应用 Hann 算法?(如下)
应该是我的样本块的大小吗?
编辑:
窗口函数代码:
(INPUT_SAMPLES=2048)
for(uint16_t i = 0; i < INPUT_SAMPLES; i++)
{
ADC_Values[i] = 0.5 - (0.5 * cos ( (2.0 * PI * ADC_Values[i]) / (INPUT_SAMPLES - 1)));
}
感谢您对此的任何帮助,罗杰
编辑2:
开玩笑,
创建窗口并按照建议更改计算已修复它。虽然窗口没有像我想要的那样提高分辨率,但它更好,并且足够接近以非常有用。太棒了...感谢大家的所有回复。