在 Java 中实现指数移动平均线
我基本上有一个这样的值数组:
0.25, 0.24, 0.27, 0.26, 0.29, 0.34, 0.32, 0.36, 0.32, 0.28, 0.25, 0.24, 0.25
上面的数组过于简化,我在实际代码中每毫秒收集1个值,我需要处理我编写的算法的输出,以找到某个时间点之前最接近的峰值。我的逻辑失败了,因为在我上面的例子中,是真正的峰值,但我的算法会向后看,看到最后一个数字是峰值,因为在它之前有一个减少。0.36
0.25
0.24
目标是获取这些值并对其应用算法,该算法将“平滑”它们,以便我有更多的线性值。(即:我希望我的结果是弯曲的,而不是锯齿状的)
我被告知要对我的值应用指数移动平均线过滤器。我该怎么做?我真的很难阅读数学方程式,我处理代码要好得多。
如何处理数组中的值,应用指数移动平均线计算来平衡它们?
float[] mydata = ...
mySmoothedData = exponentialMovingAverage(mydata, 0.5);
float[] exponentialMovingAverage(float[] input, float alpha) {
// what do I do here?
return result;
}