Recursive leastsquares FIR adaptive filter
adaptfilt.rls
will be removed in a future
release. Use dsp.RLSFilter
instead.
ha = adaptfilt.rls(l,lambda,invcov,coeffs,states)
ha = adaptfilt.rls(l,lambda,invcov,coeffs,states)
constructs
an FIR direct form RLS adaptive filter 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.rls
.
Input Argument  Description 

 Adaptive filter length (the number of coefficients or
taps) and it must be a positive integer. 
 RLS forgetting factor. This is a scalar and should lie
in the range (0, 1]. 
 Inverse of the input signal covariance matrix. For best performance, you should initialize this matrix to be a positive definite matrix. 
 Vector of initial filter coefficients. it must be a length 
 Vector of initial filter states for the adaptive filter.
It must be a length 
Since your adaptfilt.rls
filter is an object,
it has properties that define its behavior in operation. Note that
many of the properties are also input arguments for creating adaptfilt.rls
objects.
To show you the properties that apply, this table lists and describes
each property for the filter object.
Name  Range  Description 

 None  Defines the adaptive filter algorithm the object uses during adaptation. 
 Vector containing  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. Remember that filter length is filter order + 1. 
 Scalar  Forgetting factor of the adaptive filter. This is a
scalar and should lie in the range (0, 1]. It defaults to 1. Setting 
 Matrix of size  Uppertriangular Cholesky (square root) factor of the input covariance matrix. Initialize this matrix with a positive definite upper triangular matrix. 
 Vector of size (  Empty when you construct the object, this gets populated after you run the filter. 

 Determine whether the filter states get restored to their
starting values for each filtering operation. The starting values
are the values in place when you create the filter if you have not
changed the filter since you constructed it. 
 Double array  Vector of the adaptive filter states. 
System Identification of a 32coefficient FIR filter over 500 adaptation iterations.
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 P0 = 10*eye(32); % Initial sqrt correlation matrix inverse lam = 0.99; % RLS forgetting factor ha = adaptfilt.rls(32,lam,P0); [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;
In this example of adaptive filtering using the RLS algorithm to update the filter coefficients for each iteration, the figure shown reveals the fidelity of the derived filter after adaptation.