FIR adaptive filter that uses LMS
adaptfilt.lms will be removed in a future
ha = adaptfilt.lms(l,step,leakage,coeffs,states)
ha = adaptfilt.lms(l,step,leakage,coeffs,states) constructs
an FIR LMS adaptive filter object
For information on how to run data through your adaptive filter
object, see the Adaptive Filter Syntaxes section of the reference
Entries in the following table describe the input arguments
Adaptive filter length (the number of coefficients or
taps) and it must be a positive integer.
LMS step size. It must be a nonnegative scalar. You can
Your LMS leakage factor. It must be a scalar between
0 and 1. When
Vector of initial filter coefficients. it must be a length
Vector of initial filter states for the adaptive filter.
It must be a length
In the syntax for creating the
the input options are properties of the object created. This table
lists the properties for the
their default values, and a brief description of the property.
Reports the adaptive filter algorithm the object uses during adaptation
Vector of elements
Vector containing the initial filter coefficients. It
must be a length
Any positive integer
Reports the length of the filter, the number of coefficients or taps
0 to 1
LMS leakage factor. It must be a scalar between zero
and one. When it is less than one, a leaky NLMS algorithm results.
Determine whether the filter states and coefficients
get restored to their starting values for each filtering operation.
The starting values are the values in place when you create the filter.
Vector of elements, data type double
Vector of the adaptive filter states.
0 to 1
LMS step size. It must be a scalar between zero and one.
Setting this step size value to one provides the fastest convergence.
Use 500 iterations of an adapting filter system to identify and unknown 32nd-order FIR filter.
x = randn(1,500); % Input to the filter b = fir1(31,0.5); % FIR system to be identified n = 0.1*randn(1,500); % Observation noise signal d = filter(b,1,x)+n; % Desired signal mu = 0.008; % LMS step size. ha = adaptfilt.lms(32,mu); [y,e] = filter(ha,x,d); subplot(2,1,1); plot(1:500,[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([b.',ha.coefficients.']); legend('Actual','Estimated'); xlabel('Coefficient #'); ylabel('Coefficient Value'); grid on;
Using LMS filters in an adaptive filter architecture is a time honored means for identifying an unknown filter. By running the example code provided you can demonstrate one process to identify an unknown FIR filter.
Shynk J.J., "Frequency-Domain and Multirate Adaptive Filtering," IEEE® Signal Processing Magazine, vol. 9, no. 1, pp. 14-37, Jan. 1992.