the moving maximum of the input signal along each channel, independently
over time. The object uses the sliding window method to determine
the moving maximum. In this method, a window of specified length is
moved over each channel, sample by sample, and the object determines
the maximum of the data in the window. For more details, see Algorithms.
The object accepts multichannel inputs, that is, m-by-n size inputs, where m ≥ 1, and n > 1. The object also accepts variable-size inputs. Once the object is locked, you can change the size of each input channel. However, the number of channels cannot change. This object supports C and C++ code generation.
To determine the moving maximum of the input:
and set the properties of the object.
step to compute the moving maximum.
Alternatively, instead of using the
to perform the operation defined by the System
object, you can
call the object with arguments, as if it were a function. For example,
= step(obj,x) and
y = obj(x) perform
movMax = dsp.MovingMaximum returns a moving
movMax, using the default properties.
movMax = dsp.MovingMaximum(Len) sets the
movMax = dsp.MovingMaximum(Name,Value) specifies
additional properties using
Name,Value pairs. Unspecified
properties have default values.
movMax = dsp.MovingMaximum('SpecifyWindowLength',1,'WindowLength',10);
SpecifyWindowLength— Specify window length
Flag to specify a window length, specified as a scalar boolean.
true — The length of
the sliding window is equal to the value you specify in the
false — The length of
the sliding window is infinite. In this mode, the object determines
the maximum of the current sample and all the past samples.
WindowLength— Length of the sliding window
Length of the sliding window, specified as a positive scalar
integer. This property applies when you set
|reset||Reset internal states of System object|
|step||Moving maximum of input signal|
Compute the moving maximum of a sum of three sine waves with varying amplitude. Use a sliding window of length 30.
Set up an input signal that is a sum of three sine waves with frequences at 2 Hz, 5 Hz, and 10 Hz. The sampling frequency is 100 Hz. Create a
dsp.MovingMaximum object with a window length of 30. Create a time scope for viewing the output.
sin = dsp.SineWave('SampleRate',100,... 'Frequency',[2 5 10],... 'SamplesPerFrame',100); movMax = dsp.MovingMaximum(30); scope = dsp.TimeScope('SampleRate',100,... 'TimeSpanOverrunAction','Scroll',... 'TimeSpan',10,'ShowGrid',true,... 'YLimits',[-4.5 4.5]);
Compute the Moving Maximum
Each sine wave component of the input signal has a different amplitude that varies with the iteration. Use the
movMax object to determine the maximum value of the current sample and the past 29 samples of the input signal.
for index = 1:100 sin.Amplitude = rand(1,3); x = sum(sin(),2); xmax = movMax(x); scope([x,xmax]) end
In the sliding window method, the output for each input sample is the maximum of the current sample and the Len - 1 previous samples. Len is the length of the window. When the algorithm computes the first Len - 1 outputs, the length of the window is the length of the data that is available.
When you do not specify the window length, the algorithm chooses an infinite window length. In this mode, the output is the maximum of the current sample and all the previous samples in the channel.
Consider an example of computing the moving maximum of a streaming input data using the sliding window method. The algorithm uses a window length of 4. With each input sample that comes in, the window of length 4 moves along the data.
 Bodenham, Dean. “Adaptive Filtering and Change Detection for Streaming Data.” PH.D. Thesis. Imperial College, London, 2012.
Usage notes and limitations:
See System Objects in MATLAB Code Generation (MATLAB Coder).