Compute output, error, and weights using LMS adaptive algorithm
Filtering / Adaptive Filters
dspadpt3
The LMS Filter block can implement an adaptive FIR filter using five different algorithms. The block estimates the filter weights, or coefficients, needed to minimize the error, e(n), between the output signal y(n) and the desired signal, d(n). Connect the signal you want to filter to the Input port. The input signal can be a scalar or a column vector. Connect the desired signal to the Desired port. The desired signal must have the same data type, complexity, and dimensions as the input signal. The Output port outputs the filtered input signal, which is the estimate of the desired signal. The Error port outputs the result of subtracting the output signal from the desired signal.
When you select LMS
for the Algorithm
parameter, the block calculates the filter weights using the least meansquare (LMS) algorithm. This algorithm is defined by the following equations.
$$\begin{array}{c}y(n)={w}^{T}(n1)u(n)\\ e(n)=d(n)y(n)\\ w(n)=\alpha w(n1)+f(u(n),e(n),\mu )\end{array}$$
The various LMS adaptive filter algorithms available in this block are defined as:
LMS:
$$f(u(n),e(n),\mu )=\mu e(n){u}^{*}(n)$$
Normalized LMS:
$$f(u(n),e(n),\mu )=\mu e(n)\frac{{u}^{\ast}(n)}{\epsilon +{u}^{H}(n)u(n)}$$
In Normalized LMS, to overcome potential numerical instability in the update of the weights, a small positive constant, ε, has been added in the denominator. For doubleprecision floatingpoint input, ε is 2.2204460492503131e016. For singleprecision floatingpoint input, ε is 1.192092896e07. For fixedpoint input, ε is 0.
SignError LMS:
$$f(u(n),e(n),\mu )=\mu \text{sign}(e(n)){u}^{*}(n)$$
SignData LMS:
$$f(u(n),e(n),\mu )=\mu e(n)\text{sign}(u(n))$$
where u(n) is real.
SignSign LMS:
$$f(u(n),e(n),\mu )=\mu \text{sign}(e(n))\text{sign}(u(n))$$
where u(n) is real.
The variables are as follows:
Variable  Description 

n  The current time index 
u(n)  The vector of buffered input samples at step n 
u*(n)  The complex conjugate of the vector of buffered input samples at step n 
w(n)  The vector of filter weight estimates at step n 
y(n)  The filtered output at step n 
e(n)  The estimation error at step n 
d(n)  The desired response at step n 
µ  The adaptation step size 
α  The leakage factor (0 < α ≤ 1) 
ε  A constant that corrects any potential numerical instability that occurs during the update of weights. 
Use the Filter length parameter to specify the length of the filter weights vector.
The Step size (mu) parameter corresponds to µ in the equations. For convergence of the normalized LMS equations, 0<µ<2. You can either specify a step size using the input port, Stepsize, or by entering a value in the Block Parameters: LMS Filter dialog.
Enter the initial filter weights w(0) as a vector or a scalar in the Initial value of filter weights text box. When you enter a scalar, the block uses the scalar value to create a vector of filter weights. This vector has length equal to the filter length and all of its values are equal to the scalar value.
When you select the Adapt port check box, an Adapt port appears on the block. When the input to this port is greater than zero, the block continuously updates the filter weights. When the input to this port is less than or equal to zero, the filter weights remain at their current values.
When you want to reset the value of the filter weights to their initial values, use the Reset port parameter. The block resets the filter weights whenever a reset event is detected at the Reset port. The reset signal rate must be the same rate as the data signal input.
From the Reset port list, select
None
to disable the Reset port. To enable the Reset port,
select one of the following from the Reset port list:
Rising edge
— Triggers a reset operation
when the Reset 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 Reset 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 Reset input is a Rising edge
or
Falling edge
(as described above)
Nonzero sample
— Triggers a reset operation
at each sample time that the Reset input is not zero
Select the Output filter weights check box to create a Wts port on the block. For each iteration, the block outputs the current updated filter weights from this port.
The following diagrams show the data types used within the LMS Filter block for fixedpoint signals; the table summarizes the definitions of variables used in the diagrams:
Variable  Definition 

u  Input vector 
W  Vector of filter weights 
µ  Step size 
e  Error 
Q  Quotient, $$Q=\frac{\mu \cdot e}{u\text{'}u}$$ 
Product u'u  Product data type in Energy calculation diagram 
Accumulator u'u  Accumulator data type in Energy calculation diagram 
Product W'u  Product data type in Convolution diagram 
Accumulator W'u  Accumulator data type in Convolution diagram 
Product $$\mu \cdot e$$  Product data type in Product of step size and error diagram 
Product $$Q\cdot u$$  Product and accumulator data type in Weight update diagram. ^{1} 
^{1}The accumulator data type for this quantity is automatically set to be the same as the product data type. The minimum, maximum, and overflow information for this accumulator is logged as part of the product information. Autoscaling treats this product and accumulator as one data type.
You can set the data type of the parameters, weights, products, quotient, and accumulators in the block mask. Fixedpoint inputs, outputs, and mask parameters of this block must have the following characteristics:
The input signal and the desired signal must have the same word length, but their fraction lengths can differ.
The step size and leakage factor must have the same word length, but their fraction lengths can differ.
The output signal and the error signal have the same word length and the same fraction length as the desired signal.
The quotient and the product output of the u'u, W'u, $$\mu \cdot e$$, and $$Q\cdot u$$ operations must have the same word length, but their fraction lengths can differ.
The accumulator data type of the u'u and W'u operations must have the same word length, but their fraction lengths can differ.
The output of the multiplier is in the product output data type if at least one of the inputs to the multiplier is real. If both of the inputs to the multiplier are complex, the result of the multiplication is in the accumulator data type. For details on the complex multiplication performed, see Multiplication Data Types.
Choose the algorithm used to calculate the filter weights.
Enter the length of the FIR filter weights vector.
Select Dialog
to enter a value for step
size in the Block parameters: LMS Filter dialog. Select
Input port
to specify step size using the
Stepsize input port.
Enter the step size μ. Tunable (Simulink).
Enter the leakage factor, 0 < 1 – μα ≤ 1. Tunable (Simulink).
Specify the initial values of the FIR filter weights.
Select this check box to enable the Adapt input port.
Select this check box to enable the Reset input port.
Select this check box to export the filter weights from the Wts port.
Specify the rounding mode for fixedpoint operations as one of the following:
Floor
Ceiling
Convergent
Nearest
Round
Simplest
Zero
For more details, see rounding mode.
When you select this parameter, the block saturates the result of its
fixedpoint operation. When you clear this parameter, the block wraps
the result of its fixedpoint operation. For details on
saturate
and wrap
, see overflow
mode for fixedpoint operations.
This parameter is visible if, for the Specify step size
via parameter, you choose
Dialog
. Choose how you specify the word
length and the fraction length of the leakage factor and step
size:
When you select Same word length as first
input
, the word length of the leakage factor
and step size match that of the first input to the block. In
this mode, the fraction length of the leakage factor and step
size is automatically set to the binarypoint only scaling that
provides you with the best precision possible given the value
and word length of the coefficients.
When you select Specify word
length
, you can enter the word length of the
leakage factor and step size, in bits. In this mode, the
fraction length of the leakage factor and step size is
automatically set to the binarypoint only scaling that provides
you with the best precision possible given the value and word
length of the coefficients.
When you select Binary point
scaling
, you can enter the word length and the
fraction length of the leakage factor and step size, in bits.
The leakage factor and the step size must have the same word
length, but the fraction lengths can differ.
If, for the Specify step size via parameter, you
choose Input port
, the word length of the
leakage factor is the same as the word length of the step size input at
the Step size port. The fraction length of the leakage factor is
automatically set to the best precision possible based on the word
length of the leakage factor.
Choose how you specify the word length and fraction length of the filter weights of the block:
When you select Same as first
input
, the word length and fraction length of the
filter weights match those of the first input to the
block.
When you select Binary point
scaling
, you can enter the word length and the
fraction length of the filter weights, in bits.
Choose how you specify the word length and fraction length of u'u, W'u, $$\mu \cdot e$$, $$Q\cdot u$$, and the quotient, Q. Here, u is the input vector, W is the vector of filter weights, μ is the step size, e is the error, and Q is the quotient, which is defined as $$Q=\frac{\mu \cdot e}{u\text{'}u}$$
When you select Same as first
input
, the word length and fraction length of
these quantities match those of the first input to the
block.
When you select Binary point
scaling
, you can enter the word length and the
fraction length of these quantities, in bits. The word length of
the quantities must be the same, but the fraction lengths can
differ.
Use this parameter to specify how you would like to designate the word and fraction lengths of the accumulators for the u'u and W'u operations.
This parameter is not used to designate the word and fraction lengths of the accumulator for the $$Q\cdot u$$ operation. The accumulator data type for this quantity is automatically set to be the same as the product data type. The minimum, maximum, and overflow information for this accumulator is logged as part of the product information. Autoscaling treats this product and accumulator as one data type.
See FixedPoint Data Types and Multiplication Data Types for illustrations depicting the use of the accumulator data type in this block:
When you select Same as first
input
, these characteristics match those of the
input to the block.
When you select Binary point
scaling
, you can enter the word length and the
fraction length of the accumulators, in bits. The word length of
both the accumulators must be the same, but the fraction lengths
can differ.
Select this parameter to prevent the fixedpoint tools from overriding the data types you specify on the block mask.
Hayes, M.H. Statistical Digital Signal Processing and Modeling. New York: John Wiley & Sons, 1996.
Port  Supported Data Types 

Input 

Desired 

Stepsize 

Adapt 

Reset 

Output 

Error 

Wts 

LMS Update  DSP System Toolbox 
RLS Filter  DSP System Toolbox 
Block LMS Filter  DSP System Toolbox 
Fast Block LMS Filter  DSP System Toolbox 
See Adaptive Filters in Simulink for related information.