Contents

dsp.LMSFilter System object

Package: dsp

LMS adaptive filter

Description

The LMSFilter implements an adaptive FIR filter object that returns the filtered output, the error vector, and filter weights. The LMS filter uses one of five different LMS algorithms.

To implement the adaptive FIR filter object:

  1. Define and set up your adaptive FIR filter object. See Construction.

  2. Call step to implement the filter according to the properties of dsp.LMSFilter. The behavior of step is specific to each object in the toolbox.

Construction

H = dsp.LMSFilter returns an adaptive FIR filter object, H, that computes the filtered output, filter error and the filter weights for a given input and desired signal using the Least Mean Squares (LMS) algorithm.

H = dsp.LMSFilter('PropertyName', PropertyValue,...) returns an LMS filter object, H, with each property set to the specified value.

H = dsp.LMSFilter(LEN,'PropertyName',PropertyValue,...) returns an LMS filter object, H, with the Length property set to LEN, and other specified properties set to the specified values.

Properties

Method

Method to calculate filter weights

Specify the method used to calculate filter weights as LMS, Normalized LMS, Sign-Error LMS, Sign-Data LMS, or Sign-Sign LMS. The default is LMS.

Length

Length of FIR filter weights vector

Specify the length of the FIR filter weights vector as a positive integer. The default is 32.

StepSizeSource

How to specify adaptation step size

Choose how to specify the adaptation step size factor as Property or Input port. The default is Property.

StepSize

Adaptation step size

Specify the adaptation step size factor as a nonnegative real number. For convergence of the normalized LMS method, set the step size greater than 0 and less than 2. This property only applies when the StepSizeSource property is Property. The default is 0.1. This property is tunable.

LeakageFactor

Leakage factor used in LMS filter

Specify the leakage factor as a real number between 0 and 1 inclusive. A leakage factor of 1 corresponds to no leakage in the adapting method. The default is 1. This property is tunable.

InitialConditions

Initial conditions of filter weights

Specify the initial values of the FIR filter weights as a scalar or vector of length equal to the Length property value. The default is 0.

AdaptInputPort

Enable weight adaptation

Specify when the LMS filter should adapt the filter weights. By default, the value of this property is false, and the object continuously updates the filter weights. When this property is set to true, an adaptation control input is provided to the step method. If the value of this input is nonzero, the object continuously updates the filter weights. If the input is zero, the filter weights remain at their current value.

WeightsResetInputPort

Enable weight reset

Specify when the LMS filter should reset the filter weights. By default, the value of this property is false, and the object does not reset the weights. When this property is set to true, a reset control input is provided to the step method, and the WeightsResetCondition property applies. The object resets the filter weights based on the values of the WeightsResetCondition property and the reset input to the step method.

WeightsResetCondition

Reset trigger setting for filter weights

Specify the event to reset the filter weights as Rising edge, Falling edge, Either edge, or Non-zero. The LMS filter resets the filter weights based on the values of this property and the reset input to the step method. This property only applies when the WeightsResetInputPort property is true. The default is Non-zero.

WeightsOutputPort

Enable returning filter weights

Set this property to true to output the adapted filter weights. The default is true.

 Fixed-Point Properties

Methods

cloneCreate LMS filter object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs of step method
isLockedLocked status for input attributes and nontunable properties
maxstepMaximum step size for LMS adaptive filter convergence
msepredPredicted mean-square error for LMS filter
msesimMean-squared error for LMS filter
releaseAllow property value and input characteristics changes
resetReset filter states for LMS filter
stepApply LMS adaptive filter to input

Examples

expand all

System Identification Using LMS Filter

hlms1 = dsp.LMSFilter(11,'StepSize',0.01);
hfilt = dsp.FIRFilter; % System to be identified
hfilt.Numerator = fir1(10,.25);
x = randn(1000,1); % input signal

d = step(hfilt, x) + 0.01*randn(1000,1); % desired signal
[y,e,w] = step(hlms1,x,d);

subplot(2,1,1);
plot(1:1000, [d,y,e]);
title('System Identification of an FIR filter');
legend('Desired', 'Output', 'Error');
xlabel('time index');
ylabel('signal value');
subplot(2,1,2);
stem([hfilt.Numerator.',w]);
legend('Actual','Estimated');
xlabel('coefficient #');
ylabel('coefficient value');

Cancel Noise Using LMS Filter

hlms2 = dsp.LMSFilter('Length',11, ...
   'Method','Normalized LMS',...
   'AdaptInputPort',true, ...
   'StepSizeSource','Input port', ...
   'WeightsOutputPort',false);
hfilt2 = dsp.FIRFilter('Numerator', fir1(10,[.5, .75]));
x = randn(1000,1); % Noise
d = step(hfilt2,x) + sin(0:.05:49.95)'; % Noise + Signal
a = 1; % adaptation control
mu = 0.05; % step size
[y, err] = step(hlms2,x,d,mu,a);

subplot(2,1,1);
plot(d);
title('Noise + Signal');
subplot(2,1,2);
plot(err);
title('Signal');

Algorithms

This filter's algorithm is defined by the following equations.

y(n)=wT(n1)u(n)e(n)=d(n)y(n)w(n)=αw(n1)+f(u(n),e(n),μ)

The various LMS adaptive filter algorithms available in this System object™ are defined as:

  • LMS:

    f(u(n),e(n),μ)=μe(n)u*(n)

  • Normalized LMS:

    f(u(n),e(n),μ)=μe(n)u(n)ε+uH(n)u(n)

  • Sign-Error LMS:

    f(u(n),e(n),μ)=μsign(e(n))u*(n)

  • Sign-Data LMS:

    f(u(n),e(n),μ)=μe(n)sign(u(n))

    where u(n) is real.

  • Sign-Sign LMS:

    f(u(n),e(n),μ)=μsign(e(n))sign(u(n))

    where u(n) is real.

The variables are as follows:

VariableDescription

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)

Was this topic helpful?