Recursive least-squares FIR adaptive filter
adaptfilt.rls will be removed in a future
ha = adaptfilt.rls(l,lambda,invcov,coeffs,states)
ha = adaptfilt.rls(l,lambda,invcov,coeffs,states) constructs
an FIR direct form RLS adaptive filter
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.
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
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
To show you the properties that apply, this table lists and describes
each property for the filter object.
Defines the adaptive filter algorithm the object uses during adaptation.
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.
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
Upper-triangular 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.
Vector of the adaptive filter states.
System Identification of a 32-coefficient 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.