Compensators#

class BlindDualMIMOCompensator(L: int = 10, alphabet: ndarray = None, mu: float = 0.0001, oversampling: int = 1, norm: bool = True, mode: Literal['cma', 'rde', 'dd'] = 'cma', name: str = 'mimo filter')#

BlindDualMIMOCompensator for 2x2 MIMO channels.

This class implements a blind dual MIMO compensator designed for 2x2 MIMO channels. It uses various loss functions to estimate filter weights without requiring a training sequence. The compensator supports different modes of operation, including Constant Modulus Algorithm (CMA), Radius Directed Equalization (RDE), and Decision Directed (DD) algorithms.

Signal Model#

The signal model is defined as:

\[\mathbf{y}[n] = \mathbf{H}^H[n] \tilde{\mathbf{x}}[n]\]

where:

  • \(\mathbf{H}[n]\) is a matrix of size \(2 \times (2(2L+1))\) containing the filter weights at step \(n\).

  • \(\mathbf{y}[n]\) is a vector of size 2 containing the two polarisation data

  • \(\tilde{\mathbf{x}}[n]\) is a \(2(2L+1)\) vector containing the \(L^{th}\) previous transmitted data on the two polarizations. This vector is obtained by stacking vertically the two polarizations as follows:

\[\begin{split}\tilde{\mathbf{x}}[n] = \begin{bmatrix} x_0[n+L]\\ \vdots\\ x_0[n]\\ \vdots\\ x_0[n-L]\\ x_1[n+L]\\ \vdots\\ x_1[n]\\ \vdots\\ x_1[n-L]\\ \end{bmatrix}\end{split}\]

The filter weights are estimated using one of the following loss functions:

  • Constant Modulus Algorithm (CMA): Minimizes the metric:

    \[\mathcal{L}_{CMA}(y[n]) = | R - |y[n]|^2 |^2\]

    where \(R = \frac{E[|s|^4]}{E[|s|^2]}\) is derived from the alphabet.

  • Radius Directed Equalization (RDE): Minimizes the metric:

    \[\mathcal{L}_{RDE}(y[n]) = | \mathcal{P}_{rad}^2(|y[n]|) - |y[n]|^2 |^2\]

    where \(\mathcal{P}_{rad}(|y[n]|)\) is the orthogonal projector into the list of radius alphabet.

  • Decision Directed (DD): Minimizes the metric:

    \[\mathcal{L}_{DD}(y[n]) = | \mathcal{P}_{\mathcal{M}}(y[n]) - y[n] |^2\]

    where \(\mathcal{P}_{\mathcal{M}}(y[n])\) is the orthogonal projector into the alphabet.

Attributes#

Lint

Length of the filter.

alphabetnp.ndarray

Alphabet used for modulation.

mufloat, optional

Step size for the update (default is 1e-4).

oversamplingint, optional

Oversampling factor (default is 1). When the oversampling is greater than one, the algorithm implements a fractionaly spaced equalizer

normbool, optional

Flag to normalize the filter weights (default is True).

modeLiteral[“cma”, “rde”, “dd”], optional

Mode of operation (default is “cma”).

sub_block_lengthint, optional

Length of sub-blocks for processing (default is 20).

namestr, optional

Name of the processor (default is “mimo filter”).

References#

  • Faruk, Md Saifuddin, and Seb J. Savory. “Digital signal processing for coherent transceivers employing multilevel formats.” Journal of Lightwave Technology 35.5 (2017): 1125-1141.