我基本上有一堆數據對象,它們將時間戳以毫秒爲單位映射到浮點值。我期待從本質上找到給定範圍內數據的峯值/最大值。我一直在使用這樣的東西:因式分解算法中的噪音
float previousValue = 0;
for (int i = 0; i < data.size(); i++) {
MyData value = data.get(i);
if (value.getData() < previousValue) {
// found the peak!
break;
} else {
previousValue = value.getData();
}
}
這個算法的唯一問題是,它沒有考慮到噪聲。從本質上講,我可以有值是這樣的:
[0.1025, 0.3000, 0.3025, 0.3500, 0.3475, 0.3525, 0.1025]
的實際峯值在0.3525,但我上面的算法將它看作0.3500,因爲它是第一位的。由於我的計算性質,我不能只在數組上做max()
並找出最大的值,我需要找到在它下降之前最先出現的最大值。
我怎樣才能找到我的高峯的頂部,同時考慮到噪音方面的一些差異?
你如何定義峯值? .3500之後的值和.3525之後的值下降。有什麼不同? – 2012-02-07 18:44:27
分離問題:首先,使用滑動窗口和平均數據 - 這將消除噪音。之後,您可以輕鬆地使用您的或任何其他方法查找峯值。 – alf 2012-02-07 18:45:27