滑动窗口法和指数加权法
移动物体和移动块使用滑动窗口法和指数加权法中的一种或两者来计算流信号的移动统计量。滑动窗法具有有限的脉冲响应,而指数加权法具有无限的脉冲响应。要分析有限时间内的统计数据,可以使用滑动窗口方法。指数加权法所需系数较少,更适合于嵌入式应用。
对象,块 | 滑动窗口方法 | 指数加权法 |
---|---|---|
dsp。MedianFilter ,中值滤波器 |
✓ | |
dsp。MovingAverage ,移动平均线 |
✓ | ✓ |
dsp。MovingMaximum ,移动的最大 |
✓ | |
dsp。MovingMinimum ,移动的最小 |
✓ | |
dsp。MovingRMS ,移动的均方根 |
✓ | ✓ |
dsp。MovingStandardDeviation ,移动标准偏差 |
✓ | ✓ |
dsp。MovingVariance ,移动的方差 |
✓ | ✓ |
功率计 ,功率计 |
✓ |
滑动窗口方法
在滑动窗口法中,指定长度的窗口,Len,一个样本一个样本地移动数据,统计数据在窗口中的数据上计算。每个输入样本的输出是当前样本窗口上的统计值Len- 1以前的样品。为了计算第一个输出样本,算法等待直到它收到输入样本的跳数。跳大小定义为窗口长度-重叠长度。窗口中剩余的样本被认为是零。举个例子,如果窗口长度为5,重叠长度为2,那么算法会等到收到3个输入样本后,再计算输出的第一个样本。在生成第一个输出后,它为输入样本的每一跳大小生成后续输出样本。移动统计算法有一个状态,并记住先前的数据。
在移动最大值、最小值和中值过滤对象和块的情况下,不能指定重叠长度。该算法假设重叠长度为窗口长度- 1。
考虑一个使用滑动窗口方法计算流输入数据移动平均的示例。该算法使用的窗口长度为4,重叠长度为3。对于每个输入样本,长度为4的窗口会沿着数据移动。
由于窗口长度是有限的,因此该算法是一个有限的脉冲响应滤波器。要分析有限时间内的统计数据,可以使用滑动窗口方法。
窗口长度的影响
窗口长度定义了算法计算统计数据的数据长度。当新数据传入时,窗口会移动。如果窗口大,计算出的统计量更接近于数据的平稳统计量。对于变化不迅速的数据,使用较长的窗口来获得更平滑的统计数据。对于变化很快的数据,使用较小的窗口。
重叠长度的影响
当重叠长度参数设置为小于窗口长度- 1的值时,算法按跳大小(窗口长度-重叠长度)的因子对输出进行下采样。在上面的例子中,重叠长度设置为1。在这种情况下,算法在每3个输入样本处产生一个输出样本n= 3。
指数加权法
指数加权法具有无限的脉冲响应。该算法计算一组权值,并递归地将这些权值应用于数据样本。随着数据年龄的增加,权重因子的大小呈指数下降,永远不会达到零。换句话说,最近的数据比旧的数据对当前样本的统计量有更大的影响。由于该算法具有无限的脉冲响应,需要的系数更少,更适合于嵌入式应用。
遗忘因子的值决定了权重因子的变化率。0.9的遗忘因子比0.1的遗忘因子对旧数据的权重更大。为了给最近的数据更多的权重,将遗忘因子移到接近0的位置。对于在快速变化的数据中检测微小的变化,更小的值(低于0.5)更合适。遗忘因子为1.0表示记忆无限。所有先前的样本都被赋予相同的权重。遗忘因子的最佳值取决于数据流。对于给定的数据流,要计算遗忘因子的最佳值,请参见[1].
考虑一个使用指数加权方法计算移动平均线的例子。遗忘因子为0.9。
移动平均算法更新权重,并通过使用以下递归方程递归地计算每个数据样本的移动平均。
λ -遗忘因子。
-应用于当前数据样本的权重因子。
-当前数据输入样本。
-前一个样本的移动平均值。
-先前数据对平均值的影响。
-当前样本的移动平均。
数据 | 重量 | 平均 |
---|---|---|
第一帧 | ||
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)) +(1/5.6953)×9×5.4176 = 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,算法选择 = 1。对于下一个样本,更新权重因子,并使用递归方程计算平均值。
随着数据年龄的增加,权重因子的大小呈指数下降,永远不会达到零。换句话说,最近的数据比旧的数据对当前平均值的影响更大。
当遗忘因子为0.5时,应用于旧数据的权重低于遗忘因子为0.9时的权重。
当遗忘因子为1时,所有数据样本的权重相等。在这种情况下,指数加权法与窗口长度无穷大的滑动窗法相同。
当信号变化迅速时,使用较低的遗忘因子。当遗忘因子较低时,过去数据对当前平均值的影响较小。这使得瞬态更加清晰。例如,考虑一个快速变化的噪声阶跃信号。
用指数加权方法计算这个信号的移动平均。比较遗忘因子为0.8、0.9和0.99时算法的性能。
当你放大这张图时,你可以看到当遗忘因子很低时,移动平均线的瞬态变化非常明显。这使得它更适合于快速变化的数据。
有关移动平均算法的更多信息,请参见算法部分的dsp。MovingAverage
系统对象™或移动平均线块页面。
有关其他移动统计算法的更多信息,请参见算法部分在各自的System对象和块页面中。
参考文献
[1] Bodenham,院长。流数据的自适应滤波和变化检测。博士论文。帝国理工学院,伦敦,2012。