Moving Average
Moving average
Libraries:
DSP System Toolbox /
Statistics
Description
The Moving Average block computes the moving average of the input signal along each channel independently over time. The block uses the sliding window method or the exponential weighting method to compute the moving average. In the sliding window method, a window of specified length moves over the data sample by sample, and the block computes the average over the data in the window. In the exponential weighting method, the block multiplies the data samples with a set of weighting factors and then sums the weighted data to compute the average. For more details on these methods, see Algorithms.
Examples
Ports
Input
x — Data input
vector  matrix
The block computes the moving average of the data specified at this input port. Specify real or complexvalued multichannel inputs of the size mbyn, where m ≥ 1 and n ≥ 1.
When the Allow arbitrary frame length for fixedsize input signals parameter appears and is not selected, and you input a fixedsize signal, the frame length must be a multiple of the hop size (window length − overlap length). In all other cases, the input frame length can be arbitrary.
The block accepts variablesize inputs (frame length changes during simulation). When you input a variablesize signal, the frame length of the signal can be arbitrary.
This port is unnamed until you set Method to
Exponential weighting
and select the Specify forgetting
factor from input port parameter.
Data Types: single
 double
Complex Number Support: Yes
lambda — Forgetting factor
positive real scalar in the range (0,1]
The forgetting factor determines how much weight past data is given. A forgetting factor of 0.9 gives more weight to the older data than does a forgetting factor of 0.1. A forgetting factor of 1.0 indicates infinite memory – all previous samples are given an equal weight.
Dependencies
This port appears when you set Method to Exponential
weighting
and select the Specify forgetting factor from input
port parameter.
Data Types: single
 double
Output
Port_1 — Moving average output
vector  matrix
Moving average, returned as a vector or a matrix. The block computes the moving average based on the Method parameter settings using either the sliding window method or the exponential weighting method. For more details, see Algorithms.
This table provides more details on the dimensions of the output signal.
Input Signal  Input Dimensions  Output Dimensions When Allow arbitrary frame length for fixedsize input signals Appears  Output Dimensions When Allow arbitrary frame length for fixedsize input signals Does Not Appear 

Fixedsize signal  mbyn, where m is a multiple of the hop size (window length − overlap length)  (m/hop size)byn  mbyn 
Fixedsize signal  mbyn, where m is not a multiple of the hop size (window length − overlap length) 
If you do not select Allow arbitrary frame length for fixedsize input signals, the block errors.  mbyn 
Variablesize signal  mbyn  ceil (m/hop
size)byn  mbyn 
When the output has an upper bound size of
ceil
(m/hop size)byn, during
simulation, the size of the first dimension varies within this bound and the size of the
second dimension remains constant. For an example that shows this behavior, see Compute Moving Average of Noisy Step Signal.
Data Types: single
 double
Complex Number Support: Yes
Parameters
If a parameter is listed as tunable, then you can change its value during simulation.
Method — Averaging method
Sliding window
(default)  Exponential weighting
Sliding window
— A window of length Window length moves over the input data along each channel. For every sample the window moves over, the block computes the average over the data in the window.Exponential weighting
— The block multiplies the samples by a set of weighting factors. The magnitude of the weighting factors decreases exponentially as the age of the data increases, but the magnitude never reaches zero. To compute the average, the algorithm sums the weighted data.
Specify window length — Flag to specify window length
on (default)  off
When you select this check box, the length of the sliding window is equal to the value you specify in Window length. When you clear this check box, the length of the sliding window is infinite. In this mode, the block computes the average of the current sample and all previous samples in the channel.
Dependencies
To enable this parameter, set Method to Sliding
window
.
Window length — Length of sliding window
4 (default)  positive scalar integer
Specifies the length of the sliding window in samples.
Dependencies
To enable this parameter, set Method to Sliding
window
and select the Specify window length check
box.
Overlap length — Overlap length between windows
3
(default)  nonnegative integer
Specify the overlap length between sliding windows as a nonnegative integer. The value of overlap length varies in the range [0, Window length − 1].
Dependencies
To enable this parameter, set Method to Sliding
window
and select the Specify window length check
box.
Allow arbitrary frame length for fixedsize input signals — Allow arbitrary frame length for fixedsize input signals
off (default)  on
Specify whether fixedsize input signals (whose size does not change during simulation) can have an arbitrary frame length, where the frame length does not have to be a multiple of the hop size. Hop size is defined as Window length − Overlap length. The block uses this parameter setting only for fixedsize input signals and ignores this parameter if the input has a variablesize.
When the input signal is a variablesize signal, the signal can have arbitrary frame length, that is, the frame length does not have to be a multiple of the hop size.
For fixedsize input signals, if you:
Select the Allow arbitrary frame length for fixedsize input signals parameter, the frame length of the signal does not have to be a multiple of the hop size. If the input is not a multiple of the hop size, then the output is generally a variablesize signal. Therefore, to support arbitrary input size, the block must also support variablesize operations, which you can enable by selecting the Allow arbitrary frame length for fixedsize input signals parameter.
Clear the Allow arbitrary frame length for fixedsize input signals parameter, the input frame length must be a multiple of the hop size.
Dependencies
To enable this parameter, set Method to Sliding
window
and select the Specify window length check
box.
Specify forgetting factor from input port — Flag to specify forgetting factor
off (default)  on
When you select this check box, the forgetting factor is input through the lambda port. When you clear this check box, the forgetting factor is specified on the block dialog through the Forgetting factor parameter.
Dependencies
To enable this parameter, set Method to Exponential
weighting
.
Forgetting factor — Exponential weighting factor
0.9 (default)  positive real scalar in the range (0,1]
The forgetting factor determines how much weight past data is given. A forgetting factor of 0.9 gives more weight to the older data than does a forgetting factor of 0.1. A forgetting factor of 1.0 indicates infinite memory – all previous samples are given an equal weight.
Tunable: Yes
Dependencies
To enable this parameter, set Method to Exponential
weighting
and clear the Specify forgetting factor from input
port check box.
Simulate using — Type of simulation to run
Code generation
(default)  Interpreted execution
Specify the type of simulation to run as one of the following:
Code generation
–– Simulate model using generated C code. The first time you run a simulation, Simulink generates C code for the block. The C code is reused for subsequent simulations, as long as the model does not change. This option requires additional startup time but provides faster simulation speed thanInterpreted execution
.Interpreted execution
–– Simulate model using the MATLAB^{®} interpreter. This option shortens startup time but has slower simulation speed thanCode generation
.
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

Algorithms
Sliding Window Method
In the sliding window method, the output for each input sample is the average of the current sample and Len – 1 previous samples. Len is the length of the window in samples. To compute the first output sample, the algorithm waits until it receives the hop size number of input samples. Hop size is defined as window length – overlap length. Remaining samples in the window are considered to be zero. As an example, if the window length is 5 and the overlap length is 2, then the algorithm waits until it receives 3 samples of input to compute the first sample of the output. After generating the first output, it generates the subsequent output samples for every hop size number of input samples.
When you do not specify the window length, the algorithm chooses an infinite window length. In this mode, the output is the moving average of the current sample and all the previous samples in the channel.
For an example, see Sliding Window Method and Exponential Weighting Method.
Exponential Weighting Method
In the exponential weighting method, the moving average is computed recursively using these formulas:
$$\begin{array}{l}{w}_{N,\lambda}=\lambda {w}_{N1,\lambda}+1\\ {\overline{x}}_{N,\lambda}=\left(1\frac{1}{{w}_{N,\lambda}}\right){\overline{x}}_{N1,\lambda}+\left(\frac{1}{{w}_{N,\lambda}}\right){x}_{N}\end{array}$$
$${\overline{x}}_{N,\lambda}$$ — Moving average at the current sample
$${x}_{N}$$ — Current data input sample
$${\overline{x}}_{N1,\lambda}$$ — Moving average at the previous sample
λ — Forgetting factor
$${w}_{N,\lambda}$$ — Weighting factor applied to the current data sample
$$\left(1\frac{1}{{w}_{N,\lambda}}\right){\overline{x}}_{N1,\lambda}$$ — Effect of the previous data on the average
For the first sample, where N = 1, the algorithm chooses $${w}_{N,\lambda}$$ = 1. For the next sample, the weighting factor is updated and used to compute the average, as per the recursive equation. As the age of the data increases, the magnitude of the weighting factor decreases exponentially and never reaches zero. In other words, the recent data has more influence on the current average than the older data.
The value of the forgetting factor determines the rate of change of the weighting factors. A forgetting factor of 0.9 gives more weight to the older data than does a forgetting factor of 0.1. A forgetting factor of 1.0 indicates infinite memory. All the previous samples are given an equal weight.
For an example, see Sliding Window Method and Exponential Weighting Method.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced in R2016bR2022b: New Overlap length parameter
Starting in R2022b, you can specify the overlap length between sliding windows using the Overlap length parameter.
R2022b: Support for arbitrary input frame length
Moving Average block supports input signals with arbitrary frame lengths when the:
Input signal is a fixedsize signal (frame length does not change during simulation). If Allow arbitrary frame length for fixedsize input signals is enabled, select the parameter.
Input signal is a variablesize signal (frame length changes during simulation).
When this block supports an arbitrary frame length input signal, the input frame length does not have to be a multiple of the hop size.
See Also
Blocks
 Moving RMS  Moving Maximum  Moving Minimum  Moving Standard Deviation  Moving Variance  Median Filter
Objects
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)