我有直接来自传感器的原始值(动态)。这些值来自安装在奶牛脖子上的可穿戴传感器。当牛反刍(意味着它咀嚼从它的第二个胃带回来的食物)时,会产生某种具有某种特定幅度和频率的加速度值(咀嚼持续时间大多在 800 毫秒到 1200 毫秒之间)。每次反刍时间为 30 至 120 秒,奶牛每天反刍约 10 小时。
我对这些值进行了快速计算,最终得到了如下图所示的图表。
我希望能够检测到信号何时下降(如突出显示的峰值),因为它代表了一个反刍期。图中的下降代表了奶牛的食团事件(意味着奶牛只是将咀嚼过的食物变浅并带回 [从胃中] 重新咀嚼的新食物)。
我尝试使用阈值方法(如果信号低于设定阈值)来做到这一点,但它无法始终正确运行。这是因为:
1)信号强度在白天和不同传感器之间略有变化,例如。在图像上,负峰不低于黑色水平线,这是我的阈值。因此,我有错误检测(根本没有检测到它们)。如果我增加阈值,我会做错误的检测,因为信号中的许多其他点可能会通过它。
2)当信号有点嘈杂时,我会做错检测或根本没有检测到。例如,信号的第 9 个黄点应该以某种方式被检测为谷值,但它远高于阈值。当然,它可能会被错误地检测到,因为它与附近的一些点具有相同的幅度。
有人知道我如何及时检测到这些点(下降)吗?
注意: 这些数据是实时的,它们没有存储在某个地方。因此,我必须能够以某种方式动态检测信号的下降,而无需对其未来值有任何了解(当然,我可以有一些小的历史记录——比如说最后 200 个值或其他东西)。
额外信息: 这些数据值实际上来自 3 轴加速器传感器。我计算它们的大小 (sqrt(x^2 + y^2 + z^2)),它们偏离大约 1g,然后我得到最后一秒的移动标准偏差(62.5 值)。这就是上图中显示的内容。黄色点的偏差约为 0.01g。
进一步: 在被一些用户询问后,我还附上了原始信号的图像(只是其中的一小部分)。用黄色标记感兴趣的区域(在幅度上)。其余 3 个图是 X、Y、Z(图例存在于图的右上角)。
另外,我附上了一个超链接,您可以在其中下载 CSV 格式的示例信号。格式如下:第 1、第 2、第 3 列是 X、Y 和 Z 轴加速度计值。第 4 列是它们的大小 (sqrt(x^2 + y^2 + z^2)),如果需要,您也可以手动计算。
https://1drv.ms/f/s!Au5-DmkSvYQzgZlLo2KJ_UBAVeYDWw
有 4 个非常好的信号的文件。Good3s.csv 的开头包含一些小垃圾(可以丢弃大约 10000 个第一个值)。Good4e.csv 最后也有相同的内容。还有 2 个非常嘈杂的信号文件,如果您喜欢硬核情况,可以解析它们。


