用于从记录的噪声数据中检测峰值的算法。里面的图表

时间:2011-01-18 22:38:22

标签: graph-algorithm

所以我从Android GPS中记录了一些数据,我正试图找到这些图的高峰,但我找不到任何具体的东西,也许是因为我不太清楚我是什么我正在寻找。我找到了一些MatLab函数,但我找不到实际的算法。我需要在Java中这样做,但我应该能够翻译其他语言的代码。

alt text

正如你所看到的,有许多“迷你峰”,但我只想要主要的那些。

4 个答案:

答案 0 :(得分:1)

我认为你想要做的是通过某种低通滤波器来运行它。根据您想要从这个数据集中获得的确切内容,可能会有一个简单的“盒子车”过滤器 足够:在每个点,取N个样本的平均值,以该点为中心, 并将平均值作为过滤值。 N越大,过滤后的数据将越积极地平滑。

答案 1 :(得分:0)

我猜你有很多分数...计算它们的平均值,从所有点的值中减去它,并从每个范围得到最高点值(负值或正值),其中点具有相同的符号,直到它们改变它。我希望我很清楚...

答案 2 :(得分:0)

由于特别讨厌和嘈杂的数据,我通常使用平滑。平滑的最简单示例是移动平均值。然后你可以在那个移动平均线上找到peacks。然后,您只需返回原始数据,并将最接近的峰值移至您在移动平均线上找到的峰值。

答案 3 :(得分:-1)

我已经做了一些调查峰值检测,我可以告诉你,如果你的数据没有表现,它可能会弄乱你的算法。在我的脑海中,您可以尝试:选择一个阈值,即阈值= 250.如果数据高于阈值,请在该时间段内找到最大值。这假设您拥有的数据平均值约为230.不确定您想获得多少花哨。希望有所帮助。