gpt4 book ai didi

java - 消除算法中的噪声

转载 作者:行者123 更新时间:2023-12-01 15:34:08 24 4
gpt4 key购买 nike

我本质上有一堆数据对象,它们将时间戳(以毫秒为单位)映射到浮点值。我希望本质上找到给定范围内数据的峰值/最大值。我基本上一直在使用这样的东西:

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();
}
}

该算法的唯一问题是它没有考虑噪声。本质上,我可以有这样的值(value)观:

[0.1025, 0.3000, 0.3025, 0.3500, 0.3475, 0.3525, 0.1025]

实际峰值位于 0.3525,但我上面的算法会将其视为 0.3500,因为它排在第一位。由于计算的性质,我不能只对数组执行 max() 并找出最大值,我需要找到在下降之前首先出现的最大值。

如何在考虑噪声变化的同时找到峰值?

最佳答案

有两个问题:

  1. 滤除噪音;
  2. 找到顶峰。

看来您已经有了 2 的解决方案,并且需要解决 1。

要滤除噪音,您需要某种 low-pass filter 。一个moving average就是这样一种过滤器。例如,exponential moving average非常容易实现并且应该运行良好。

总之:将您的系列通过过滤器,然后应用峰值查找算法。

关于java - 消除算法中的噪声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9181884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com