由于我不想进入的原因,我需要过滤一组值以减少抖动。为此,我需要能够平均一个数字列表,最近的效果最大,最近的效果最小。我使用的是10的样本大小,但在某些时候这很容易改变。
我可以在这里应用任何相当简单的老化算法吗?
答案 0 :(得分:5)
答案 1 :(得分:0)
我在嵌入式控制应用程序中碰到了类似的东西。
我遇到的最简单的选择是3/4过滤器。这将在整个数据集中连续应用:
current_value = (3*current_value + new_value)/4
我最终决定使用16抽头FIR滤波器:
答案 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。