【发布时间】:2012-02-08 20:27:09
【问题描述】:
我基本上有一个这样的值数组:
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;
}
【问题讨论】:
标签: java math lowpass-filter