如何从存储在数据库中的样本中检测精确的采样间隔?

时间:2017-01-28 00:36:39

标签: algorithm theory detection sample-rate

使用实时单元对硬件传感器进行精确采样(精确采样周期)。但是,时间值不会与采样值一起发送到数据库。相反,将记录插入数据库的时间存储在数据库中的样本中。使用DATETIME类型,GETDATE()函数用于获取当前时间(Microsoft SQL Server)。

如何重建精确的采样时间?

由于采样间隔(应该)恰好是60秒,因此更早的无需以获得更精确的解决方案。 (这是一个旧的解决方案,第三方,有很多历史样本。这样就无法修复设计。)

为了处理样本,我需要重建样本的正确时间实例。改变整个序列的时间没有问题(也就是说,开始时间是否相反,而不是绝对是无关紧要的)。另一方面,应尽可能精确地检测采样间隔。我也不能确定,采样间隔恰好是60秒(如上所述)。我也无法确定采样间隔是否真的恒定(例如,基于设备温度的微小差异)。

处理样品时,我想得到:

  • 开始时间
  • 采样间隔
  • 样本值的序列

重建样本时,我需要将其转换回元组:

  • 样本的时间
  • 样本值

因此,对于具有 n 样本的序列,最后一个样本的时间应该等于start_time + sampling_interval * (n - 1),并且它应该合理地接近存储的原始结束时间数据库。

考虑到存储的采样时间相对于实际采样时间略微振荡(采样和插入数据库之间的恒定延迟不是问题)。

我正在考虑计算从先前和当前采样时间计算的间隔的平均值和校正标准偏差。

不连续性检测:如果计算的间隔大于平均值的3西格玛,我会认为它是采样曲线的不连续性(例如,机器已关闭,或任何外部事件导致缺少样本。在这种情况下,我想从处理新序列开始。(采样频率也可以改变。)

是否有任何众所周知的方法来解决问题。如果是的话,你能指点我的文章吗?或者你能给我算法的名称或首字母缩略词吗?

1 个答案:

答案 0 :(得分:2)

+1来查看差异序列。我们可以将差分序列建模为低频事实(样本的真实速率,随时间缓慢变化)和高频噪声(将样本送入数据库的随机延迟)之和。您需要低通过滤器来删除后者。