Adaptive filtering involves the changing of filter parameters (coefficients) over time, to adapt to changing signal characteristics. Over the past three decades, digital signal processors have made great advances in increasing speed and complexity, and reducing power consumption. As a result, real-time adaptive filtering algorithms are quickly becoming practical and essential for the future of communications, both wired and wireless.

For more detailed information about adaptive filters and adaptive filter theory, refer to the books listed in the [1] and [2].

This section presents a brief description of how adaptive filters work and some of the applications where they can be useful.

Adaptive filters self learn. As the signal into the filter continues, the adaptive filter coefficients adjust themselves to achieve the desired result, such as identifying an unknown filter or canceling noise in the input signal. In the figure below, the shaded box represents the adaptive filter, comprising the adaptive filter and the adaptive recursive least squares (RLS) algorithm.

**Block Diagram That Defines the Inputs and Output of a Generic
RLS Adaptive Filter**

The next figure provides the general adaptive filter setup with inputs and outputs.

**Block Diagram Defining General Adaptive Filter Algorithm Inputs
and Outputs**

DSP System Toolbox™ software includes adaptive filters of a broad range of forms, all of which can be worthwhile for specific needs. Some of the common ones are:

Adaptive filters based on least mean squares (LMS) techniques, such as

`dsp.LMSFilter`

and`dsp.FilteredXLMSFilter`

Adaptive filters based on recursive least squares (RLS) techniques, including sign-data, sign-error, and sign-sign. See

`dsp.RLSFilter`

.Adaptive filters based on lattice filters. See

`dsp.AdaptiveLatticeFilter`

.Adaptive filters that operate in the frequency domain. See

`dsp.FrequencyDomainAdaptiveFilter`

.

An adaptive filter designs itself based on the characteristics of the input signal to the filter and a signal that represents the desired behavior of the filter on its input.

Designing the filter does not require any other frequency response
information or specification. To define the self-learning process
the filter uses, you select the adaptive algorithm used to reduce
the error between the output signal *y(k)* and
the desired signal *d(k)*.

When the LMS performance criterion for *e(k)* has
achieved its minimum value through the iterations of the adapting
algorithm, the adaptive filter is finished and its coefficients have
converged to a solution. Now the output from the adaptive filter matches
closely the desired signal *d(k)*. When you change
the input data characteristics, sometimes called the *filter
environment*, the filter adapts to the new environment by
generating a new set of coefficients for the new data. Notice that
when *e(k)* goes to zero and remains there you
achieve perfect adaptation, the ideal result but not likely in the
real world.

The adaptive filter functions in this toolbox implement the shaded portion of the figures, replacing the adaptive algorithm with an appropriate technique. To use one of the functions, you provide the input signal or signals and the initial values for the filter.

Adaptive Filters in DSP System Toolbox Software offers details
about the algorithms available and the inputs required to use them
in MATLAB^{®}.

Selecting the adaptive filter that best meets your needs requires careful consideration. An exhaustive discussion of the criteria for selecting your approach is beyond the scope of this User's Guide. However, a few guidelines can help you make your choice.

Two main considerations frame the decision — how you plan to use the filter and the filter algorithm to use.

When you begin to develop an adaptive filter for your needs, most likely the primary concern is whether using an adaptive filter is a cost-competitive approach to solving your filtering needs. Generally many areas determine the suitability of adaptive filters (these areas are common to most filtering and signal processing applications). Four such areas are

Filter consistency — Does your filter performance degrade when the filter coefficients change slightly as a result of quantization, or you switch to fixed-point arithmetic? Will excessive noise in the signal hurt the performance of your filter?

Filter performance — Does your adaptive filter provide sufficient identification accuracy or fidelity, or does the filter provide sufficient signal discrimination or noise cancellation to meet your requirements?

Tools — Do tools exist that make your filter development process easier? Better tools can make it practical to use more complex adaptive algorithms.

DSP requirements — Can your filter perform its job within the constraints of your application? Does your processor have sufficient memory, throughput, and time to use your proposed adaptive filtering approach? Can you trade memory for throughput: use more memory to reduce the throughput requirements or use a faster signal processor?

Of the preceding considerations, characterizing filter consistency or robustness may be the most difficult.

The simulations in DSP System Toolbox software offers a good first step in developing and studying these issues. LMS algorithm filters provide both a relatively straightforward filters to implement and sufficiently powerful tool for evaluating whether adaptive filtering can be useful for your problem.

Additionally, starting with an LMS approach can form a solid baseline against which you can study and compare the more complex adaptive filters available in the toolbox. Finally, your development process should, at some time, test your algorithm and adaptive filter with real data. For truly testing the value of your work there is no substitute for actual data.

One common adaptive filter application is to use adaptive filters to identify an unknown system, such as the response of an unknown communications channel or the frequency response of an auditorium, to pick fairly divergent applications. Other applications include echo cancellation and channel identification.

In the figure, the unknown system is placed in parallel with the adaptive filter. This layout represents just one of many possible structures. The shaded area contains the adaptive filter system.

**Using an Adaptive Filter to Identify an Unknown System**

Clearly, when *e(k)* is very small, the adaptive
filter response is close to the response of the unknown system. In
this case the same input feeds both the adaptive filter and the unknown.
If, for example, the unknown system is a modem, the input often represents
white noise, and is a part of the sound you hear from your modem when
you log in to your Internet service provider.

By placing the unknown system in series with your adaptive filter,
your filter adapts to become the inverse of the unknown system as *e(k)* becomes
very small. As shown in the figure the process requires a delay inserted
in the desired signal *d(k)* path to keep the data
at the summation synchronized. Adding the delay keeps the system causal.

**Determining an Inverse Response to an Unknown System**

Including the delay to account for the delay caused by the unknown system prevents this condition.

Plain old telephone systems (POTS) commonly use inverse system identification to compensate for the copper transmission medium. When you send data or voice over telephone lines, the copper wires behave like a filter, having a response that rolls off at higher frequencies (or data rates) and having other anomalies as well.

Adding an adaptive filter that has a response that is the inverse of the wire response, and configuring the filter to adapt in real time, lets the filter compensate for the rolloff and anomalies, increasing the available frequency output range and data rate for the telephone system.

In noise cancellation, adaptive filters let you remove noise from a signal in real time. Here,
the desired signal, the one to clean up, combines noise and desired information. To
remove the noise, feed a signal *n'(k)* to the adaptive filter
that is correlated to the noise to be removed from the desired signal.

**Using an Adaptive Filter to Remove Noise from an Unknown System**

So long as the input noise to the filter remains correlated
to the unwanted noise accompanying the desired signal, the adaptive
filter adjusts its coefficients to reduce the value of the difference
between* y(k)* and *d(k), *removing
the noise and resulting in a clean signal in *e(k)*.
Notice that in this application, the error signal actually converges
to the input data signal, rather than converging to zero.

Predicting signals requires that you make some key assumptions. Assume that the signal is either steady or slowly varying over time, and periodic over time as well.

**Predicting Future Values of a Periodic Signal**

Accepting these assumptions, the adaptive filter must predict
the future values of the desired signal based on past values. When *s(k)* is
periodic and the filter is long enough to remember previous values,
this structure with the delay in the input signal, can perform the
prediction. You might use this structure to remove a periodic signal
from stochastic noise signals.

Finally, notice that most systems of interest contain elements of more than one of the four adaptive filter structures. Carefully reviewing the real structure may be required to determine what the adaptive filter is adapting to.

Also, for clarity in the figures, the analog-to-digital (A/D) and digital-to-analog (D/A) components do not appear. Since the adaptive filters are assumed to be digital in nature, and many of the problems produce analog data, converting the input signals to and from the analog domain is probably necessary.

[1] Hayes, Monson H., *Statistical Digital Signal Processing and
Modeling*, John Wiley & Sons, 1996, 493–552.

[2] Haykin, Simon, *Adaptive Filter Theory*,
Prentice-Hall, Inc., 1996