FIR adaptive filter that uses LMS
adaptfilt.lms
will be removed in a future
release. Use dsp.LMSFilter
instead.
ha = adaptfilt.lms(l,step,leakage,coeffs,states)
ha = adaptfilt.lms(l,step,leakage,coeffs,states)
constructs
an FIR LMS adaptive filter object ha
.
For information on how to run data through your adaptive filter
object, see the Adaptive Filter Syntaxes section of the reference
page for filter
.
Entries in the following table describe the input arguments
for adaptfilt.lms
.
Input Argument  Description 

 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
use 
 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 adaptfilt
object,
the input options are properties of the object created. This table
lists the properties for the adaptfilt.lms
object,
their default values, and a brief description of the property.
Property  Range  Property Description 

 None  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 32ndorder 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., "FrequencyDomain and Multirate Adaptive Filtering," IEEE^{®} Signal Processing Magazine, vol. 9, no. 1, pp. 1437, Jan. 1992.
adaptfilt.blms
 adaptfilt.blmsfft
 adaptfilt.dlms
 adaptfilt.nlms
 adaptfilt.sd
 adaptfilt.se
 adaptfilt.ss
 adaptfilt.tdafdft