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.