Products & Services Industries Academia Support User Community Company

Learn more about Communications Toolbox   

Specifying an Adaptive Equalizer

Defining an Equalizer Object

As mentioned in Basic Procedure for Equalizing a Signal, you must create an equalizer object before you can equalize a signal.

To create an equalizer object, use one of the functions listed in the table below.

FunctionType of Equalizer
lineareqLinear equalizer (symbol-spaced or fractionally spaced)
dfeDecision-feedback equalizer

For example, the code below creates three equalizer objects: one representing a symbol-spaced linear RLS equalizer having 10 weights, one representing a fractionally spaced linear RLS equalizer having 10 weights and two samples per symbol, and one representing a decision-feedback RLS equalizer having three weights in the feedforward filter and two weights in the feedback filter.

% Create equalizer objects of different types.
eqlin = lineareq(10,rls(0.3)); % Symbol-spaced linear
eqfrac = lineareq(10,rls(0.3),[-1 1],2); % Fractionally spaced linear
eqdfe = dfe(3,2,rls(0.3)); % DFE

Although the lineareq and dfe functions have different syntaxes, they both require an input argument that represents an adaptive algorithm. To learn how to represent an adaptive algorithm or how to vary properties of the adaptive algorithm, see Specifying an Adaptive Algorithm.

Each of the equalizer objects created above is a valid input argument for the equalize function. To learn how to use the equalize function to equalize a signal, see Using Adaptive Equalizers.

Duplicating and Copying Objects

Another way to create an object is to duplicate an existing object and then adjust the properties of the new object, if necessary. If you do this, it is important that you use a copy command such as

c2 = copy(c1); % Copy c1 to create an independent c2.

instead of c2 = c1. The copy command creates a copy of c1 that is independent of c1. By contrast, the command c2 = c1 creates c2 as merely a reference to c1, so that c1 and c2 always have indistinguishable content.

Accessing Properties of an Equalizer

An equalizer object has numerous properties that record information about the equalizer. Properties can be related to

For information about what each equalizer property means, see the reference page for the lineareq or dfe function.

To view or change any properties of an equalizer object, use the syntax described for channel objects in Viewing Object Properties and Changing Object Properties.

Linked Properties of an Equalizer Object

Some properties of an equalizer object are related to each other such that when one property's value changes, another property's value must adjust, or else the equalizer object fails to describe a valid equalizer. For example, in a linear equalizer, the nWeights property is the number of weights, while the Weights property is the value of the weights. If you change the value of nWeights, the value of Weights must adjust so that its vector length is the new value of nWeights.

To find out which properties are related and how MATLAB compensates automatically when you make certain changes in property values, see the reference page for lineareq or dfe.

The example below illustrates that when you change the value of nWeights, MATLAB automatically changes the values of Weights and WeightInputs to make their vector lengths consistent with the new value of nWeights. Because the example uses the variable-step-size LMS algorithm, StepSize is a vector (not a scalar) and MATLAB changes its vector length to maintain consistency with the new value of nWeights.

eqlvar = lineareq(10,varlms(0.01,0.01,0,1)) % Create equalizer object.
eqlvar.nWeights = 8 % Change the number of weights from 10 to 8.
% MATLAB automatically changes the sizes of eqlvar.Weights and
% eqlvar.WeightInputs.

The output below displays all the properties of the equalizer object before and after the change in the value of the nWeights property. In the second listing of properties, the nWeights, Weights, WeightInputs, and StepSize properties all have different values compared to the first listing of properties.

eqlvar =
 
                  EqType: 'Linear Equalizer'
                 AlgType: 'Variable Step Size LMS'
                nWeights: 10
             nSampPerSym: 1
                  RefTap: 1
                SigConst: [-1 1]
                InitStep: 0.0100
                 IncStep: 0.0100
                 MinStep: 0
                 MaxStep: 1
           LeakageFactor: 1
                StepSize: [1x10 double]
                 Weights: [0 0 0 0 0 0 0 0 0 0]
            WeightInputs: [0 0 0 0 0 0 0 0 0 0]
    ResetBeforeFiltering: 1
     NumSamplesProcessed: 0

 
eqlvar =
 
                  EqType: 'Linear Equalizer'
                 AlgType: 'Variable Step Size LMS'
                nWeights: 8
             nSampPerSym: 1
                  RefTap: 1
                SigConst: [-1 1]
                InitStep: 0.0100
                 IncStep: 0.0100
                 MinStep: 0
                 MaxStep: 1
           LeakageFactor: 1
                StepSize: [1x8 double]
                 Weights: [0 0 0 0 0 0 0 0]
            WeightInputs: [0 0 0 0 0 0 0 0]
    ResetBeforeFiltering: 1
     NumSamplesProcessed: 0
  


Free Early Verification Kit

Learn how to apply early verification to your development process through these technical resources.

How much time do you spend on testing to ensure implementation meets system-level requirements?

 © 1984-2009- The MathWorks, Inc.    -   Site Help   -   Patents   -   Trademarks   -   Privacy Policy   -   Preventing Piracy   -   RSS