【发布时间】:2010-11-04 15:54:54
【问题描述】:
我有一个连续值,我想计算一个exponential moving average。通常我会为此使用标准公式:
- Sn = αY + (1-α)Sn-1
其中 Sn 是新的平均值,α 是 alpha,Y 是样本,Sn-1 是之前的平均值。
很遗憾,由于各种问题,我没有一致的采样时间。我可能知道我最多可以采样一次,例如每毫秒一次,但由于我无法控制的因素,我可能无法一次采样几毫秒。然而,一个可能更常见的情况是,我稍微早一点或晚一点地进行简单采样:而不是在 0、1 和 2 毫秒进行采样。我在 0、0.9 和 2.1 ms 采样。我确实预计,无论延迟如何,我的采样频率都会远远高于奈奎斯特极限,因此我不必担心混叠。
我认为我可以通过根据自上次采样以来的时间长度适当地改变 alpha 以或多或少合理的方式处理此问题。
我认为这会起作用的部分原因是 EMA 在前一个数据点和当前数据点之间“线性插值”。如果我们考虑以间隔 t 计算以下样本列表的 EMA:[0,1,2,3,4]。如果我们使用区间 2t,我们应该得到相同的结果,其中输入变为 [0,2,4],对吧?如果 EMA 假设,在 t2,自 t0 以来的值一直是 2,这将与在 [0,2, 2,4,4],它没有这样做。还是说这有道理?
有人能告诉我如何适当地改变 alpha 吗? “请展示你的作品。”即,向我展示证明您的方法确实在做正确事情的数学。
【问题讨论】:
-
您不应该为不同的输入获得相同的 EMA。将 EMA 视为一个过滤器,以 2t 采样相当于下采样,过滤器将给出不同的输出。这对我来说很清楚,因为 [0,2,4] 包含比 [0,1,2,3,4] 更高的频率分量。除非问题是,我如何动态更改过滤器以使其提供相同的输出。也许我错过了什么?
-
但输入并没有什么不同,只是采样频率较低。间隔 2t 的 [0,2,4] 就像间隔 t 的 [0,,2,,4] ,其中 _ 表示样本被忽略
标签: math signal-processing average digital-filter