【发布时间】:2017-12-27 13:33:55
【问题描述】:
我正在记录一个房间的温度值,并将它们保存到数据库中。我想在温度突然升高时收到警报。我不能设置固定值,因为冬天可以接受 18°C,夏天可以接受 25°C。但是,如果它在 30 分钟内从 20°C 跳到 25°C 并保持这样的状态 5 分钟(以消除错误读数),我想被告知。
我目前的想法是获取最近 30 分钟 (A) 的读数和最近 5 分钟 (B) 的读数,计算 A 和 B 的中值并检查它们之间的差异是否小于我想要的阈值。
这是解决这个问题的正确方法还是有更好的算法?我搜索了一个特定的,但其中大多数似乎过于复杂。
谢谢!
【问题讨论】:
-
梯度为 ΔTemp / ΔTime 应该会给您所需的测量值。
-
在 30 分钟内从 20° 跃升到 25° 似乎相当缓慢,并且可能只是因为太阳从窗户射进来。
-
了解 CUSUM 方法。
-
这取决于您对“突然”的定义和其他因素。你提到的方法可以工作。另一种方法是通过对差异进行运行样本来估计温度随时间的梯度。然后你可以在这个的绝对值上设置一些阈值。如果您担心读数错误,可以采用梯度的滚动平均值。
标签: algorithm math time-series