我得到了一项任务,给出了离散数据,比如
我需要将其分成5块,由它创建的模板决定。
我不允许猜测模板,因为每个输入看起来都不同。
我的方法是在数据中找到峰值(高于或低于零),然后使用该峰值模式对数据进行切片。这是我得到的:(不是上述数据)
顶部的图形是图形中的峰值,因为我知道我有5个部分和15个点,我可以说每个部分都有3个点,然后将其切片,这是该图片中的第二个图形
在40个输入中,我设法仅为其中5个输入,因为我的“峰值检测”算法非常基本。
我应该使用哪种峰值检测算法,也可以找到局部最小值,并且具有PHP实现/简单的psudo代码?我是这个数据分析领域的初学者,所以我需要你的提示。
最后,我是否正在朝着如何切割这些数据的方向前进?或者有一种更为人熟知的方法吗?
修改
我以前没有解释过:这个切片的目的是为切片创建一个统一的非时间相关模型,这意味着长短片段的长度相同,即每个峰值。如果每个切片完成这个,只是拉伸,数据看起来很吵,就像这样:(这仍然在开发中,所以我之前没有写过)
我不知道如何在没有峰值的情况下这样做,因为每个切片对于不同的部分(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>