峰值计数器算法

时间:2017-08-26 16:48:47

标签: php c++ algorithm

我正在寻找一些有效的高峰计数器算法,但无法找到符合我需求的算法:

  • 类C语言(它将在 PHP 但我可以从JS / C / Cpp翻译)
  • 数据无法向前移动
  • 具有静态阈值 - 检测超过270瓦的峰值且这些峰值很短,因此也存在时间限制。

我已经在这里查了一下: Peak signal detection in realtime timeseries data 但对我来说,这似乎不是一个可行的解决方案。

以下是一些示例数据: example chart

数据格式如下:

$a = [
    'timestamp' = 1500391300.342
    'power' => 383.87
];

在此图表上有14个峰值。所以我需要算法来循环计数。 令人惊讶的是,每个峰值可以超过10个点。峰值是连续的阵列,可以自我填充。可以访问至少100个先前的点,但无法访问未来的数据。

我还准备了包含15个峰和一些示例数据的Calc(ODC)文档。 Here it is

Spreadsheet

到目前为止,我有一个简单的算法来计算上升的斜率,但这不能正常工作(因为可能没有超过270W的斜率,它可能被分为5个点或跳跃可能太长而不能算作峰值):

if ($previousLog['power'] - $deviceLog['power'] > 270) {
    $numberShots++;
}

提前致谢,任何提示都可以提供帮助。

1 个答案:

答案 0 :(得分:0)

简单hysteresis应该有效:

  1. 查找高于270W的样本
  2. 当样品高于240W时,跟踪所见的最大样品, 及其时间戳
  3. 当您发现样本低于240W时,请返回步骤1