rls

(To be removed) Construct recursive least squares (RLS) adaptive algorithm object

rls will be removed in a future release. Use comm.LinearEqualizer or comm.DecisionFeedback instead.

Syntax

alg = rls(forgetfactor)
alg = rls(forgetfactor,invcorr0)

Description

The rls function creates an adaptive algorithm object that you can use with the lineareq function or dfe function to create an equalizer object. You can then use the equalizer object with the equalize function to equalize a signal. To learn more about the process for equalizing a signal, see .

alg = rls(forgetfactor) constructs an adaptive algorithm object based on the recursive least squares (RLS) algorithm. The forgetting factor is forgetfactor, a real number between 0 and 1. The inverse correlation matrix is initialized to a scalar value.

alg = rls(forgetfactor,invcorr0) sets the initialization parameter for the inverse correlation matrix. This scalar value is used to initialize or reset the diagonal elements of the inverse correlation matrix.

Properties

The table below describes the properties of the RLS adaptive algorithm object. To learn how to view or change the values of an adaptive algorithm object, see Equalization.

PropertyDescription
AlgTypeFixed value, 'RLS'
ForgetFactorForgetting factor
InvCorrInitScalar value used to initialize or reset the diagonal elements of the inverse correlation matrix

Also, when you use this adaptive algorithm object to create an equalizer object (via the lineareq function or dfe function), the equalizer object has an InvCorrMatrix property that represents the inverse correlation matrix for the RLS algorithm. The initial value of InvCorrMatrix is InvCorrInit*eye(N), where N is the total number of equalizer weights.

Examples

collapse all

The code creates equalizer objects for these configurations:

  • A symbol-spaced linear RLS equalizer with 10 weights.

  • A fractionally spaced linear RLS equalizer with 10 weights, a BPSK constellation, and two samples per symbol.

  • A decision-feedback RLS equalizer with three weights in the feedforward filter and two weights in the feedback filter.

All three equalizer objects specify the RLS adaptive algorithm with a forgetting factor of 0.3.

Create equalizer objects of different types. The default settings are used for properties not set using 'Name,Value' pairs.

eqlin = comm.LinearEqualizer('Algorithm','RLS','NumTaps',10,'ForgettingFactor',0.3)
eqlin = 
  comm.LinearEqualizer with properties:

                          Algorithm: 'RLS'
                            NumTaps: 10
                   ForgettingFactor: 0.3000
    InitialInverseCorrelationMatrix: 0.1000
                      Constellation: [1x4 double]
                       ReferenceTap: 3
                         InputDelay: 0
              InputSamplesPerSymbol: 1
              TrainingFlagInputPort: false
                 AdaptAfterTraining: true
               InitialWeightsSource: 'Auto'
                 WeightUpdatePeriod: 1

eqfrac = comm.LinearEqualizer('Algorithm','RLS','NumTaps',10,'ForgettingFactor',0.3, ...
    'Constellation',[-1 1],'InputSamplesPerSymbol',2)
eqfrac = 
  comm.LinearEqualizer with properties:

                          Algorithm: 'RLS'
                            NumTaps: 10
                   ForgettingFactor: 0.3000
    InitialInverseCorrelationMatrix: 0.1000
                      Constellation: [-1 1]
                       ReferenceTap: 3
                         InputDelay: 0
              InputSamplesPerSymbol: 2
              TrainingFlagInputPort: false
                 AdaptAfterTraining: true
               InitialWeightsSource: 'Auto'
                 WeightUpdatePeriod: 1

eqdfe = comm.DecisionFeedbackEqualizer('Algorithm','RLS','NumForwardTaps',3, ...
    'NumFeedbackTaps',2,'ForgettingFactor',0.3)
eqdfe = 
  comm.DecisionFeedbackEqualizer with properties:

                          Algorithm: 'RLS'
                     NumForwardTaps: 3
                    NumFeedbackTaps: 2
                   ForgettingFactor: 0.3000
    InitialInverseCorrelationMatrix: 0.1000
                      Constellation: [1x4 double]
                       ReferenceTap: 3
                         InputDelay: 0
              InputSamplesPerSymbol: 1
              TrainingFlagInputPort: false
                 AdaptAfterTraining: true
               InitialWeightsSource: 'Auto'
                 WeightUpdatePeriod: 1

Algorithms

Referring to the schematics presented in Equalization, define w as the vector of all weights wi and define u as the vector of all inputs ui. Based on the current set of inputs, u, and the current inverse correlation matrix, P, this adaptive algorithm first computes the Kalman gain vector, K

where H denotes the Hermitian transpose.

Then the new inverse correlation matrix is given by

(ForgetFactor)-1(P – KuHP)

and the new set of weights is given by

w + K*e

where the * operator denotes the complex conjugate.

Compatibility Considerations

expand all

Not recommended starting in R2019a

References

[1] Farhang-Boroujeny, B., Adaptive Filters: Theory and Applications, Chichester, England, John Wiley & Sons, 1998.

[2] Haykin, S., Adaptive Filter Theory, Third Ed., Upper Saddle River, NJ, Prentice-Hall, 1996.

[3] Kurzweil, J., An Introduction to Digital Communications, New York, John Wiley & Sons, 2000.

[4] Proakis, John G., Digital Communications, Fourth Ed., New York, McGraw-Hill, 2001.

Introduced before R2006a