老化数据集

时间:2009-03-06 15:19:33

标签: algorithm math

由于我不想进入的原因,我需要过滤一组值以减少抖动。为此,我需要能够平均一个数字列表,最近的效果最大,最近的效果最小。我使用的是10的样本大小,但在某些时候这很容易改变。

我可以在这里应用任何相当简单的老化算法吗?

4 个答案:

答案 0 :(得分:5)

  • 查看exponential smoothing。相当简单,可能足以满足您的需求。基本上最近的观察结果比旧的观察结果相对更重。
  • 另外(取决于应用程序)您可能希望查看各种强化学习技巧,例如Q-LearningTD-Learning或一般来说任何涉及折扣的方法。

答案 1 :(得分:0)

我在嵌入式控制应用程序中碰到了类似的东西。

我遇到的最简单的选择是3/4过滤器。这将在整个数据集中连续应用:

current_value = (3*current_value + new_value)/4

我最终决定使用16抽头FIR滤波器:

Overview
FIR FAQ
Wikipedia article

答案 2 :(得分:0)

可以使用许多加权平均算法。

例如,对于项目I(n),顺序为n = 1到N(从最新到最旧):

(SUM(I(n) * (N + 1 - n)) / SUM(n)

答案 3 :(得分:0)

从问题来看,你是否正在处理固定长度并不完全清楚 数据或数据是否持续进入。后者的物理模型很好 将是一个低通滤波器,使用电容器和电阻器(R和C)。假设 您的数据在时间上是等距间隔的(是吗?),这会导致更新处方

U_aged [n + 1] = U_aged [n] + deltat / Tau(U_raw [n + 1] - U_aged [n])

其中Tau是滤波器的时间常数。在零deltat的限制,这 给出指数衰减(旧值将减少到其值之后的1 / e) 时间Tau)。在实现中,您只需要保持运行加权和U_aged。

deltat将为1,Tau将指定'老化常数',步数 需要将样本的贡献降低到1 / e。