Note: This page has been translated by MathWorks. Click here to see

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

Equalize using constant modulus algorithm

Equalizers

The CMA Equalizer block uses a linear equalizer and the constant modulus algorithm
(CMA) to equalize a linearly modulated baseband signal through a dispersive channel.
During the simulation, the block uses the CMA to update the weights, once per symbol. If
the **Number of samples per symbol** parameter is `1`

,
then the block implements a symbol-spaced equalizer; otherwise, the block implements a
fractionally spaced equalizer.

When using this block, you should initialize the equalizer weights with a nonzero vector. Typically, CMA is used with differential modulation; otherwise, the initial weights are very important. A typical vector of initial weights has a 1 corresponding to the center tap and zeros elsewhere.

The `Input`

port accepts a scalar-valued or column vector input
signal. The `Desired`

port receives a training sequence with a
length that is less than or equal to the number of symbols in the
`Input`

signal.

You can configure the block to have one or more of the extra ports listed in the table below.

Port | Meaning | How to Enable |
---|---|---|

`Err` output | y(R -|y|^{2}), where y is the equalized
signal and R is a constant related to the signal constellation | Select Output error. |

`Wts` output | A vector listing the weights after the block has processed either the current input frame or sample. | Select Output weights. |

Referring to the schematics in Equalizer Structure, define *w* as the vector of all
weights *w*_{i} and define *u*
as the vector of all inputs *u*_{i}. Based on
the current set of weights, *w*, this adaptive algorithm creates
the new set of weights given by

(`LeakageFactor`

) w + (`StepSize`

)
u^{*}e

where the * operator denotes the complex conjugate.

The delay between the transmitter's modulator output and the CMA equalizer output is typically unknown (unlike the delay for other adaptive equalizers in this product). If you need to determine the delay, you can use the Find Delay block.

**Number of taps**The number of taps in the filter of the equalizer.

**Number of samples per symbol**The number of input samples for each symbol.

When you set this parameter to 1, the filter weights are updated once for each symbol, for a symbol spaced (i.e. T-spaced) equalizer. When you set this parameter to a value greater than one, the weights are updated once every

*N*^{th}sample, for a fractionally spaced (i.e. T/N-spaced) equalizer.**Signal constellation**A vector of complex numbers that specifies the constellation for the modulation.

**Step size**The step size of the CMA.

**Leakage factor**The leakage factor of the CMA, a number between 0 and 1. A value of 1 corresponds to a conventional weight update algorithm, and a value of 0 corresponds to a memoryless update algorithm.

**Initial weights**A vector that lists the initial weights for the taps.

**Output error**If you check this box, the block outputs the error signal described in the table above.

**Output weights**If you check this box, the block outputs the current weights.

[1] Haykin, Simon, *Adaptive Filter
Theory*, Third Ed., Upper Saddle River, N.J., Prentice-Hall, 1996.

[2] Johnson, Richard C. Jr., Philip Schniter, Thomas. J.
Endres, et al., "Blind Equalization Using the Constant Modulus Criterion: A Review,"
*Proceedings of the IEEE*, vol. 86, pp. 1927-1950, October
1998.

LMS Linear Equalizer, LMS Decision Feedback Equalizer, RLS Linear Equalizer, RLS Decision Feedback Equalizer