Documentation Center |
Package: comm
Equalize using maximum likelihood sequence estimation
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:
Define and set up your maximum likelihood sequence estimate equalizer object. See Construction.
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.
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.
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 k–1 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 M–1. In this case, M indicates the length of the Constellation property. An integer value of k–1 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. |
clone | Create MLSEE object with same property values |
getNumInputs | Number of expected inputs to step method |
getNumOutputs | Number of outputs from step method |
isLocked | Locked status for input attributes and nontunable properties |
release | Allow property value and input characteristics changes |
reset | Reset states of MLSEE object |
step | Equalize using maximum likelihood sequence estimation |
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))
This object implements the algorithm, inputs, and outputs described on the MLSE Equalizer block reference page. The object properties correspond to the block parameters.