主要内容

滑动窗口法和指数加权法

运动对象和块采用滑动窗口法和指数加权法中的一种或两种方法计算流信号的运动统计量。滑动窗口法具有有限的脉冲响应,而指数加权法具有无限的脉冲响应。要分析有限时间内数据的统计数据,请使用滑动窗口方法。指数加权法需要较少的系数,更适合于嵌入式应用。

滑动窗口法

在滑动窗口方法中,指定长度的窗口,Len,一个样本一个样本地移动数据,统计数据在窗口中的数据上计算。每个输入样本的输出是当前样本窗口的统计量Len- 1以前的样品。为了计算第一个输出样本,算法等待,直到它收到输入样本的跳数。跳点大小定义为窗口长度-重叠长度。窗口中剩余的样本被认为是零。举个例子,如果窗口长度是5,重叠长度是2,那么算法会等到接收到输入的3个样本才计算输出的第一个样本。在生成第一个输出后,它为输入样本的每一跳大小生成后续输出样本。移动统计算法有一个状态,并记住先前的数据。

在移动最大值、最小值和中值过滤对象和块的情况下,不能指定重叠长度。该算法假设重叠长度为窗长- 1。

考虑一个使用滑动窗口方法计算流输入数据的移动平均的例子。该算法使用的窗口长度为4,重叠长度为3。对于每个输入样本,长度为4的窗口都会沿着数据移动。

窗口的长度是有限的,使得算法是一个有限的脉冲响应滤波器。要分析有限时间内数据的统计数据,请使用滑动窗口方法。

窗口长度的影响

窗口长度定义了算法计算统计数据的数据长度。随着新数据的输入,窗口会移动。如果窗口较大,则计算的统计量更接近于数据的平稳统计量。对于变化不迅速的数据,使用较长的窗口以获得更平滑的统计数据。对于变化快的数据,使用较小的窗口。

重叠长度的影响

当重叠长度参数设置为小于窗口长度- 1时,算法将按跳长(窗口长度-重叠长度)的因子对输出进行下采样。在上面的例子中,重叠长度设置为1。在这种情况下,算法每第三个输入样本产生一个输出样本,从n= 3。

指数加权法

指数加权法具有无限的脉冲响应。该算法计算一组权重,并递归地将这些权重应用于数据样本。随着数据年龄的增加,加权因子的大小呈指数下降,永远不会达到零。换句话说,最近的数据比旧的数据对当前样本的统计量有更大的影响。由于脉冲响应是无限的,该算法需要的系数更少,更适合于嵌入式应用。

遗忘因子的大小决定了权重因子的变化率。与0.1的遗忘因子相比,0.9的遗忘因子给予旧数据更多的权重。为了给予最近数据更多的权重,将遗忘因子移近0。对于检测快速变化的数据中的小变化,较小的值(低于0.5)更合适。遗忘因子为1.0表示无限记忆。前面所有的样本都有相同的权重。遗忘因子的最佳值取决于数据流。对于给定的数据流,要计算遗忘因子的最佳值,请参见[1]

考虑一个使用指数加权方法计算移动平均的例子。遗忘因子为0.9。

移动平均算法更新权重,并使用以下递归方程递归地计算每个数据样本的移动平均。

w N λ λ w N 1 λ + 1 x ¯ N λ 1 1 w N λ x ¯ N 1 λ + 1 w N λ x N

  • λ -遗忘因子。

  • w N λ -应用于当前数据样本的权重因子。

  • x N -当前数据输入样本。

  • x ¯ N 1 λ -前一个样本的移动平均。

  • 1 1 w N λ x ¯ N 1 λ -先前数据对平均值的影响。

  • x ¯ N λ -当前样本的移动平均。

数据 重量 w N λ λ w N 1 λ + 1 平均 x ¯ N λ 1 1 w N λ x ¯ N 1 λ + 1 w N λ x N
第一帧
2 1.为N= 1时,该值为1。 2
3. 0.9×1+1 = 1.9 (1 - (1/1.9))×2+(1/1.9)×3 = 2.5263
4 0.9×1.9+1 = 2.71 (1 - (1/2.71))×2.52+(1/2.71)×4 = 3.0701
5 0.9×2.71+1 = 3.439 (1 - (1/3.439))×3.07+(1/3.439)×5 = 3.6313
第二帧
6 0.9×3.439+1 = 4.095 (1 - (1/4.095))×3.6313+(1/4.095)×6 = 4.2097
7 0.9×4.095+1 = 4.6855 (1 - (1/4.6855))×4.2097+(1/4.6855)×7 = 4.8052
8 0.9×4.6855+1 = 5.217 (1 - (1/5.217))×4.8052+(1/5.217)×8 = 5.4176
9 0.9×5.217+1 = 5.6953 (1 - (1/5.6953))×5.4176+(1/5.6953)×9 = 6.0466
第三帧
3. 0.9×5.6953+1 = 6.1258 (1 - (1/6.1258))×6.0466+(1/6.1258)×3 = 5.5493
4 0.9×6.1258+1 = 6.5132 (1 - (1/6.5132))×5.5493+(1/6.5132)×4 = 5.3114
6 0.9×6.5132+1 = 6.8619 (1 - (1/6.8619))×5.3114+(1/6.8619)×6 = 5.4117
8 0.9×6.8619+1 = 7.1751 (1 - (1/7.1751))×5.4117+(1/7.1751)×8 = 5.7724

移动平均算法有一个状态,并记住前一个时间步长的数据。

对于第一个样本,当N= 1,算法选择 w N λ = 1。对于下一个样本,将更新权重因子,并使用递归方程计算平均值。

随着数据年龄的增加,加权因子的大小呈指数下降,永远不会达到零。换句话说,最近的数据对当前平均值的影响比旧的数据更大。

当遗忘因子为0.5时,应用于旧数据的权重低于遗忘因子为0.9时。

当遗忘因子为1时,所有数据样本的权重相等。在这种情况下,指数加权方法与窗口长度无穷大的滑动窗口方法相同。

当信号变化迅速时,使用较低的遗忘因子。当遗忘因子较低时,过去数据对当前平均值的影响较小。这使得瞬态更加清晰。作为一个例子,考虑一个快速变化的噪声阶跃信号。

使用指数加权方法计算该信号的移动平均。比较遗忘因子为0.8、0.9和0.99时算法的性能。

当你放大图时,你可以看到当遗忘因子较低时,移动平均线中的瞬态变化是尖锐的。这使得它更适合于快速变化的数据。

有关移动平均算法的更多信息,请参阅算法章节。dsp。MovingAverage系统对象™或移动平均线块页面。

有关其他移动统计算法的详细信息,请参见算法部分中各自的System对象和块页面。

参考文献

[1]波登汉姆,迪恩。流数据的自适应过滤和变化检测博士论文。帝国理工学院,伦敦,2012。

相关的话题