Documentation Center

  • Trial Software
  • Product Updates

comm.MLSEEqualizer System object

Package: comm

Equalize using maximum likelihood sequence estimation

Description

The MLSEEqualizer object uses the Viterbi algorithm to equalize a linearly modulated signal through a dispersive channel. The object processes input frames and outputs the maximum likelihood sequence estimate (MLSE) of the signal. This processing uses an estimate of the channel modeled as a finite impulse response (FIR) filter.

To equalize a linearly modulated signal and output the maximum likelihood sequence estimate:

  1. Define and set up your maximum likelihood sequence estimate equalizer object. See Construction.

  2. Call step to equalize a linearly modulated signal and output the maximum likelihood sequence estimate according to the properties of comm.MLSEEqualizer. The behavior of step is specific to each object in the toolbox.

Construction

H = comm.MLSEEqualizer creates a maximum likelihood sequence estimation equalizer (MLSEE) System object™, H. This object uses the Viterbi algorithm and a channel estimate to equalize a linearly modulated signal that has been transmitted through a dispersive channel.

H = comm.MLSEEqualizer(Name,Value) creates an MLSEE object, H, with each specified property set to the specified value. You can specify additional name-value pair arguments in any order as (Name1,Value1,...,NameN,ValueN).

H = comm.MLSEEqualizer(CHANNEL,Name,Value) creates an MLSEE object, H. This object has the Channel property set to CHANNEL, and the other specified properties set to the specified values.

Properties

ChannelSource

Source of channel coefficients

Specify the source of the channel coefficients as one of Input port | Property. The default is Property.

Channel

Channel coefficients

Specify the channel as a numeric, column vector containing the coefficients of an FIR filter. The default is [1;0.7;0.5;0.3]. The length of this vector determines the memory length of the channel. This must be a multiple of the samples per symbol, that you specify in the SamplesPerSymbol property. This property applies when you set the ChannelSource property to Property.

Constellation

Input signal constellation

Specify the constellation of the input modulated signal as a complex vector. The default is [1+1i -1+1i -1-1i 1-1i].

TracebackDepth

Traceback depth of Viterbi algorithm

Specify the number of trellis branches (the number of symbols), the Viterbi algorithm uses to construct each traceback path. The default is 21. The traceback depth influences the decoding accuracy and delay. The decoding delay represents the number of zero symbols that precede the first decoded symbol in the output. When you set the TerminationMethod property to Continuous, the decoding delay equals the number of zero symbols of this property. When you set the TerminationMethod property to Truncated, there is no output delay.

TerminationMethod

Termination method of Viterbi algorithm

Specify the termination method of the Viterbi algorithm as one of Continuous | Truncated. The default is Truncated. When you set this property to Continuous, the object initializes the Viterbi algorithm metrics of all the states to 0 in the first call to the step method. Then, the object saves its internal state metric at the end of each frame, for use with the next frame. When you set this property to Truncated, the object resets at every frame. The Viterbi algorithm processes each frame of data independently, resetting the state metric at the end of each frame. The traceback path always starts at the state with the minimum metric. The initialization of the state metrics depends on whether you specify a preamble or postamble. If you set the PreambleSource property to None, the object initializes the metrics of all the states to 0 at the beginning of each data frame. If you set the PreambleSource property to Property, the object uses the preamble that you specify at the Preamble property, to initialize the state metrics at the beginning of each data frame. When you specify a preamble, the traceback path ends at one of the states represented by that preamble. If you set the PostambleSource property to None, the traceback path starts at the state with the smallest metric. If you set the PostambleSource property to Property, the traceback path begins at the state represented by the postamble that you specify at the Postamble property. If the postamble does not decode to a unique state, the decoder identifies the smallest of all possible decoded states that are represented by the postamble. The decoder then begins traceback decoding at that state. When you set this property to Truncated, the step method input data signal must contain at least TracebackDepth symbols, not including an optional preamble.

ResetInputPort

Enable equalizer reset input

Set this property to true to enable an additional input to the step method. The default is false. When this input is a nonzero, double-precision or logical scalar value, the object resets the states of the equalizer. This property applies when you set the TerminationMethod property to Continuous.

PreambleSource

Source of preamble

Specify the source of the preamble that is expected to precede the input signal. Choose from None | Property. The default is None. Set this property to Property to specify a preamble using the Preamble property. This property applies when you set the TerminationMethod property to Truncated.

Preamble

Preamble that precedes input signals

Specify a preamble that is expected to precede the data in the input signal as an integer, row vector. The default is [0 3 2 1]. The values of the preamble should be between 0 and M-1, where M is the length of the signal constellation that you specify in the Constellation property. An integer value of k1 in the vector corresponds to the k-th entry in the vector stored in the Constellation property. This property applies when you set the TerminationMethod property to Truncated and the PreambleSource property to Property.

PostambleSource

Source of postamble

Specify the source of the postamble that is expected to follow the input signal. Choose from None | Property. The default is None. Set this property to Property to specify a postamble in the Postamble property. This property applies when you set the TerminationMethod property to Truncated.

Postamble

Postamble that follows input signals

Specify a postamble that is expected to follow the data in the input signal as an integer row vector. The default is [0 2 3 1]. The values of the postamble should be between 0 and M1. In this case, M indicates the length of the Constellation property. An integer value of k1 in the vector corresponds to the k-th entry in the vector specified in the Constellation property. This property applies when you set the TerminationMethod property to Truncated and the PostambleSource property to Property. The default is [0 2 3 1].

SamplesPerSymbol

Number of samples per symbol

Specify the number of samples per symbol in the input signal as an integer scalar value. The default is 1.

Methods

cloneCreate MLSEE object with same property values
getNumInputsNumber of expected inputs to step method
getNumOutputsNumber of outputs from step method
isLockedLocked status for input attributes and nontunable properties
releaseAllow property value and input characteristics changes
resetReset states of MLSEE object
stepEqualize using maximum likelihood sequence estimation

Examples

Equalize a QPSK signal transmitted through a dispersive channel.

    hMod = comm.QPSKModulator(0,'SymbolMapping','Binary');
    hDemod = comm.QPSKDemodulator(0,'SymbolMapping','Binary');
 % Channel coefficients
    chCoeffs = [.986; .845; .237; .12345+.31i]; 
    hMLSEE = comm.MLSEEqualizer('TracebackDepth',10,...
                      'Channel',chCoeffs, 'Constellation',[1 1i -1 -1i]);
 % Create an error rate calculator
    hError = comm.ErrorRate;
    for n = 1:50
      data= randi([0 3],100,1);
      modSignal = step(hMod, data);
  
 % Introduce channel distortion.
      chanOutput = filter(chCoeffs,1,modSignal); 
 
 % Equalize the channel output and demodulate
      eqSignal = step(hMLSEE,chanOutput);
      demodData = step(hDemod,eqSignal);
 % Compute BER
      errorStats = step(hError, data, demodData);
    end
    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))

Algorithms

This object implements the algorithm, inputs, and outputs described on the MLSE Equalizer block reference page. The object properties correspond to the block parameters.

See Also

Was this topic helpful?