获取嘈杂的样本向量的频率

时间:2012-06-10 16:40:34

标签: filtering arduino frequency noise-reduction

我主要需要一种通用算法,然后我将在我的系统(Arduino板)上移植,但我很高兴能够在其他方向上继续进行研究。

我有一组大约650个样本,覆盖5秒代表一个周期性信号,但有很多噪音;样品来自TAOS230光传感器,信号是基于血流的人体皮肤透明度。

我需要主/主导信号的频率,实际上是人脉冲。 示例与此https://www.dropbox.com/s/fw196r6yf1awhrh/untitled2.bmp

类似

这里有一个包含大约5k个样本的转储https://www.dropbox.com/s/efwvyn5oec7ixgg/samples.txt

谢谢,

亚历

1 个答案:

答案 0 :(得分:0)

我经常为arduino做的事情是使用一个平均输入数据的函数 像

newx包含新的样本数据

 x = (9 * x +newx ) /10

这会抑制信号, 另请注意,焊接不良也与高噪声水平有关,请检查一下。

下一步是定义实际平均值,然后你可以计算你上/下检索频率的次数,我会通过定义它来像上面的-n或+ n那样做。这是一个有点模糊的实现,但会工作。 (另外,如果你不使用平均距离n,平均样本会得到很多假阳性。

使该功能只计算状态变化 在伪代码中:

#// counting state changes
if ( state > avg_state + n ) and (oldstate = -1)  {statecount++ : oldstate = +1 } 
if ( state < avg_state - n ) and (oldstate = +1)  {statecount-- : oldstate = -1 }

它可能有点简单(没有FFT),但通常这些简单的事情很有效。