【问题标题】:Modified moving average for variable step information可变步长信息的修正移动平均值
【发布时间】:2020-08-05 03:23:37
【问题描述】:

修正移动平均线(请参阅https://en.wikipedia.org/wiki/Moving_average#Modified_moving_average)应用于以固定时间步长采样的数据。有没有像这样的低通滤波器可以应用于以可变时间步长采样的数据?

【问题讨论】:

  • 在不知道这些数据是什么以及为什么需要过滤它的情况下无法真正做出好的回答。

标签: algorithm filtering signal-processing


【解决方案1】:

如果您想象每个样本提供的值一直持续到下一个样本,则该信号将成为一个连续信号,在样本时间具有一系列阶跃变化。

然后您可以应用“修正移动平均”滤波器来产生连续的平滑信号,并且您可以随时使用以下公式计算平滑信号的精确值:

ynow = xprev + (yprev - xprev) * e- Rt

其中 xprev 是前一个样本,yprev 是前一个样本时的平滑值(可以使用相同的公式计算), t 是自上一个样本以来的时间,R 是一个介于 0 和 1 之间的因子,用于控制平滑量。 R 值越小,输出越平滑。

这与@btilly 给出的公式非常相似,但他使用 xnow 而不是 xprev,这可能对您有用,但没有与过滤后的连续信号的解释相同。

【讨论】:

  • 这和@btilly 的信息正是我想要的,谢谢。
【解决方案2】:

“像这样”是主观的。以下是两种可能对您有用的方法。

第一种是使用插值将具有可变时间步长的数据转换为具有固定时间步长的数据,然后使用移动平均值。如果您的可变时间步长与固定时间步长完全匹配,那么这将成为指数阻尼移动平均线。

第二个是让r 成为所需衰减率的对数。 (这将是一个负数。)那么如果您的下一次观察是在您之前的观察之后的时间t,那么:

average_next = average_old * e^(r*t) + (1 - e^(r*t))*observation

假设r*t 很小,您可以使用著名的泰勒级数e^x = 1 + x + x^2/2 + x^3/6 + ... 的几个术语。

这个计算比较复杂,但是如果可变步长是固定的,那么这就会变成移动平均线。 (而且您不需要完全匹配即可使其工作!)

【讨论】:

  • 请注意,这个方法有一些奇怪的属性,可能会也可能不会,比如当之前的样本是旧的,那么输出将立即非常接近新样本。如果上一个样本是最近的,则不会。 (x,y) = [(0,0), (10,1)] 产生与 [(0,0), (5,0), (10,1)] 不同的结果
  • @MattTimmermans 这是真的。并且[(0, 0), (5, 8), (6, 9), (7, 10)] 的结果对(5, 8) 数据点具有很强的权重。鉴于此,第一个通常更好。如果您有规律的间隔但有时会错过测量,那么第二个很好。
猜你喜欢
  • 1970-01-01
  • 2018-05-08
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-20
  • 2014-11-29
相关资源
最近更新 更多