峰值检测/切片离散数据

时间:2016-08-03 06:48:21

标签: php algorithm

我得到了一项任务,给出了离散数据,比如

enter image description here

我需要将其分成5块,由它创建的模板决定。

我不允许猜测模板,因为每个输入看起来都不同。

我的方法是在数据中找到峰值(高于或低于零),然后使用该峰值模式对数据进行切片。这是我得到的:(不是上述数据)

enter image description here

顶部的图形是图形中的峰值,因为我知道我有5个部分和15个点,我可以说每个部分都有3个点,然后将其切片,这是该图片中的第二个图形

在40个输入中,我设法仅为其中5个输入,因为我的“峰值检测”算法非常基本。

我应该使用哪种峰值检测算法,也可以找到局部最小值,并且具有PHP实现/简单的psudo代码?我是这个数据分析领域的初学者,所以我需要你的提示。

最后,我是否正在朝着如何切割这些数据的方向前进?或者有一种更为人熟知的方法吗?

修改

我以前没有解释过:这个切片的目的是为切片创建一个统一的非时间相关模型,这意味着长短片段的长度相同,即每个峰值。如果每个切片完成这个,只是拉伸,数据看起来很吵,就像这样:(这仍然在开发中,所以我之前没有写过) enter image description here

我不知道如何在没有峰值的情况下这样做,因为每个切片对于不同的部分(1秒,1.1秒等)有不同的时间

1 个答案:

答案 0 :(得分:0)

在数据中找到没有交点的4个最长子集,其中值保持在零容差范围内。如果您不知道有多少节拍需要隔离峰值检测变得更相关,因为高于给定阈值的峰值数量定义了您解剖的部分数量。

我认为你不是第一个攻击这类问题的人...... https://www.biopac.com/knowledge-base/extracting-heart-rate-from-a-noisy-ecg-signal/

修改:: 至于峰值发现算法,我认为本文提供了一些方法。 http://www.ifi.uzh.ch/dbtg/teaching/thesesarch/ReportRSchneider.pdf

标记为Significant Peak-Valley Algorithm的方法或多或少归结为在超出(低于和高于)给定阈值的区域内找到局部极值(最小值和最大值),该阈值由平均值的任意数量的标准偏差定义。 / p>