移动对象和块使用滑动窗口法和指数加权法的一种或两种方法计算流信号的移动统计量。滑动窗法的脉冲响应是有限的,而指数加权法的脉冲响应是无限的。要分析一个有限持续时间的数据,使用滑动窗口方法。指数加权法要求的系数更少,更适合嵌入式应用。
对象,块 | 滑动窗口方法 | 指数加权方法 |
---|---|---|
DSP.MedianFilter. ,中位过滤器 |
✓ | |
dsp。MovingAverage ,平均移动 |
✓ | ✓ |
dsp。MovingMaximum ,移动最大值 |
✓ | |
dsp.movingminimum. ,移动的最小 |
✓ | |
dsp.movingrms. ,移动rms |
✓ | ✓ |
dsp.movingstandddeviation. ,移动标准偏差 |
✓ | ✓ |
dsp.movingvariance. ,移动的方差 |
✓ | ✓ |
在滑动窗口方法中,指定长度的窗口,Len.,在数据上一个样本一个样本地移动,统计量是在窗口中的数据上计算的。每个输入样例的输出是当前样例窗口和Len.- 1以前的样本。在第一次步骤中,计算第一个Len.- 1输出窗口没有足够的数据时,算法用零填充窗口。在随后的时间步骤中,要填充窗口,该算法使用来自先前数据帧的样本。移动统计算法具有状态并记住以前的数据。
考虑一个使用滑动窗口方法计算流输入数据的移动平均值的例子。该算法的窗口长度为4。随着每个输入样本的进入,长度为4的窗口沿着数据移动。
窗口具有有限长度,使算法成为有限脉冲响应滤波器。要在有限的数据持续时间内分析统计信息,请使用滑动窗口方法。
窗口长度的影响
窗口长度定义算法在其上计算统计量的数据的长度。当新数据进入时,窗口移动。如果窗口很大,则计算的统计量更接近数据的平稳统计量。对于变化不快的数据,使用长窗口来获得更平滑的统计数据。对于变化很快的数据,使用较小的窗口。
指数加权法具有无限脉冲响应。该算法计算一组权值,并将这些权值递归地应用于数据样本。随着数据年龄的增加,权重因子的大小呈指数级递减,永远不会达到零。换句话说,最近的数据比以前的数据对当前样本的统计有更大的影响。由于该算法的脉冲响应是无限的,因此对系数的要求更少,更适合嵌入式应用。
遗忘因子的值决定了加权因子的变化率。与0.1相比,0.9的遗忘因子赋予旧数据更多的权重。为了给最近的数据更多的权重,将遗忘因素移近0。对于快速变化数据中的小位移,较小的值(小于0.5)更合适。遗忘因子为1.0表示内存无限。所有先前的样品都给予相等的重量。遗忘因子的最优值取决于数据流。对于给定的数据流,要计算遗忘因子的最优值,请参见[1].
考虑使用指数加权方法计算计算移动平均线的示例。遗忘因子是0.9。
移动平均算法更新权值,并通过使用以下递归方程递归地计算每个数据样本的移动平均。
λ遗忘因子。
- 加权因子应用于当前数据样本。
- 电流数据输入样本。
- 在前一个样本中移动平均水平。
- 以前的数据对平均数据的影响。
-当前样本的移动平均。
数据 | 重量 | 平均 |
---|---|---|
框架1 | ||
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 |
框架2. | ||
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. | ||
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 Object™或平均移动块页面。
有关其他移动统计算法的更多信息,请参见算法各个系统对象和块页面中的部分。
[1] Bodenham,Dean。“自适应滤波和变更检测流数据。”博士论文。帝国学院,伦敦,2012。