Compute root-mean-square value of input or sequence of inputs
Statistics
dspstat3
The RMS block computes the RMS value of each row or column of the input, along vectors of a specified dimension of the input, or of the entire input. The RMS block can also track the RMS value in a sequence of inputs over a period of time. The Running RMS parameter selects between basic operation and running operation.
When you do not select the Running RMS check box, the block computes the RMS value of each row or column of the input, along vectors of a specified dimension of the input, or of the entire input at each individual sample time, and outputs the array y. Each element in y is the RMS value of the corresponding column, row, vector, or entire input. The output y depends on the setting of the Find the RMS value over parameter. For example, consider a 3-dimensional input signal of size M-by-N-by-P:
Entire input
— The
output at each sample time is a scalar that contains the RMS value
of the entire input.
Each row
— The output
at each sample time consists of an M-by-1-by-P array,
where each element contains the RMS value of each vector over the
second dimension of the input. For an input that is an M-by-N matrix,
the output at each sample time is an M-by-1 column
vector.
Each column
— The
output at each sample time consists of a 1-by-N-by-P array,
where each element contains the RMS value of each vector over the
first dimension of the input. For an input that is an M-by-N matrix,
the output at each sample time is a 1-by-N row
vector.
In this mode, the block treats length-M unoriented vector inputs as M-by-1 column vectors.
Specified dimension
—
The output at each sample time depends on Dimension.
If Dimension is set to 1, the output is
the same as that when you select Each column
.
If Dimension is set to 2, the output is
the same as when you select Each row
. If Dimension is
set to 3, the output at each sample time is an M-by-N matrix
containing the RMS value of each vector over the third dimension of
the input.
The RMS value of the jth column of an M-by-N input matrix u is given by
$${y}_{j}=\sqrt{\frac{{\displaystyle \sum _{i=1}^{M}{\left|{u}_{ij}\right|}^{2}}}{M}}\text{}1\le j\le N$$
y = sqrt(sum(u.*conj(u))/size(u,1)) % Equivalent MATLAB code
When you select the Running RMS check box, the block tracks the RMS value of successive inputs to the block. In this mode, you must also specify a value for the Input processing parameter:
When you select Elements as channels
(sample based)
, the block outputs an M-by-N array.
Each element y_{ij} of the
output contains the RMS value of the element u_{ij} over
all inputs since the last reset.
When you select Columns as channels (frame
based)
, the block outputs an M-by-N matrix.
Each element y_{ij} of the
output contains the RMS value of the jth column
over all inputs since the last reset, up to and including element u_{ij} of
the current input.
When your inputs are of variable size, and you select the Running RMS check box, there are two options:
If you set the Input processing parameter
to Elements as channels (sample based)
,
the state is reset.
If you set the Input processing parameter
to Columns as channels (frame based)
, then
there are two cases:
When the input size difference is in the number of channels (i.e., number of columns), the state is reset.
When the input size difference is in the length of channels (i.e., number of rows), there is no reset and the running operation is carried out as usual.
The block resets the running RMS whenever a reset event is detected
at the optional Rst
port. The reset sample time
must be a positive integer multiple of the input sample time.
When a reset event occurs while the Input processing parameter
is set to Elements as channels (sample based)
,
the running RMS for each channel is initialized to the value in the
corresponding channel of the current input. Similarly, when the Input
processing parameter is set to Columns as
channels (frame based)
, the running RMS for each channel
is initialized to the earliest value in each channel of the current
input.
You specify the reset event in the Reset port parameter:
None
disables the Rst
port.
Rising edge
— Triggers
a reset operation when the Rst
input does one of
the following:
Rises from a negative value to a positive value or zero
Rises from zero to a positive value, where the rise is not a continuation of a rise from a negative value to zero (see the following figure)
Falling edge
— Triggers
a reset operation when the Rst
input does one of
the following:
Falls from a positive value to a negative value or zero
Falls from zero to a negative value, where the fall is not a continuation of a fall from a positive value to zero (see the following figure)
Either edge
— Triggers
a reset operation when the Rst
input is a Rising
edge
or Falling edge
, as
described earlier
Non-zero sample
—
Triggers a reset operation at each sample time that the Rst
input
is not zero
Note: When running simulations in the Simulink^{®} MultiTasking mode, reset signals have a one-sample latency. Therefore, when the block detects a reset event, there is a one-sample delay at the reset port rate before the block applies the reset. For more information on latency and the Simulink tasking modes, see Excess Algorithmic Delay (Tasking Latency) and Time-Based Scheduling and Code Generation in the Simulink Coder™ documentation. |
In the following ex_rms_ref model,
the RMS block calculates the running RMS of a 3-by-2 matrix input, u
.
The Input processing parameter is set to Columns
as channels (frame based)
, so the block processes the
input as a two channel signal with a frame size of three. The running
RMS is reset at t=2 by an impulse to the block's Rst
port.
The operation of the block is shown in the following figure.
Enables running operation when selected.
Specify how the block should process the input when computing the running RMS. You can set this parameter to one of the following options:
Columns as channels (frame based)
—
When you select this option, the block treats each column of the input
as a separate channel.
Elements as channels (sample based)
—
When you select this option, the block treats each element of the
input as a separate channel.
This parameter appears only when you select the Running RMS check box.
Note:
The option |
Specify the reset event that causes the block to reset the running RMS. The sample time of the input to the Rst port must be a positive integer multiple of the input sample time. This parameter appears only when you select the Running RMS check box. For more information, see Resetting the Running RMS.
Specify whether to find the RMS value along rows, columns, entire input, or the dimension specified in the Dimension parameter. For more information, see Basic Operation. This parameter appears only when you clear the Running RMS check box.
Specify the dimension (one-based value) of the input signal,
over which the RMS value is computed. The value of this parameter
cannot exceed the number of dimensions in the input signal. This parameter
is only visible when the Find the RMS value over parameter
is set to Specified dimension
.
Double-precision floating point
Single-precision floating point
Boolean — The block accepts Boolean inputs
to the Rst
port.