我基本上有一堆数据对象,它们以毫秒为单位将时间戳映射到浮点值。我正在寻找基本上找到给定范围内数据的峰值/最大值。我基本上一直在使用这样的东西:
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()
在数组上做并找出最大值,我需要在它下降之前找到首先出现的最大值。
如何在考虑噪声差异的同时找到峰值?