Skip to main content

Module detection

Module detection 

Source
Expand description

MIMO detection on the generic model $y = H x + w$.

A detector recovers the $n_{t}$ symbols of $x$, drawn from a constellation, from the $n_{r}$ received samples $y$, given the channel $H$ ($n_{r} \times n_{t}$) and the noise variance $\sigma^{2} = \mathbb{E}|w_{i}|^{2}$:

DetectorPrincipleComplexityDiversity ($n_{r} \ge n_{t}$, Rayleigh)
Linear::mr$\hat x_{k} = h_{k}^{H} y / \lVert h_{k}\rVert^{2}$ (matched filter)$n_{r} n_{t}$ per vector$n_{r}$ without interference; interference-limited
Linear::zf$\hat x = (H^{H} H)^{-1} H^{H} y$cubic in $n_{t}$$n_{r} - n_{t} + 1$
Linear::mmse$\hat x = (H^{H} H + \frac{\sigma^{2}}{E_{s}} I)^{-1} H^{H} y$, unbiasedcubic$n_{r} - n_{t} + 1$ at high SNR, better at low SNR
Sicordered successive interference cancellation (V-BLAST)$n_{t}$ linear filtersbetween linear and ML
Ml$\arg\min_{x} \lVert y - H x\rVert^{2}$ by exhaustive search$M^{n_{t}}$$n_{r}$
Spherethe same minimum by Schnorr–Euchner depth-first searchvariable, exact ML$n_{r}$
KBestbreadth-first tree search keeping $K$ paths$K M n_{t}$close to ML

Every detector returns the label (index) of the decided point of every transmit stream (MimoDetector::detect); the linear detectors, Ml and KBest (and the message-passing detectors of crate::message_passing) also give bit log-likelihood ratios (MimoDetector::llr, positive for a 0, most significant bit first, stream after stream; MimoDetector::has_soft_output), and the linear and message-passing ones an estimate of every symbol with its noise variance (MimoDetector::soft_estimate, an Estimates). Coherent binds a detector to a channel matrix and implements the Detect trait on multi-stream containers.

§Model

The linear detectors filter with $W = (H^{H} H + \lambda I)^{-1} H^{H}$ ($\lambda = 0$ for ZF, $\sigma^{2}/E_{s}$ for MMSE). With $E = \sigma^{2} (H^{H} H + \lambda I)^{-1}$, the ZF estimate of stream $k$ has the noise variance $E_{kk}$; the MMSE estimate is divided by its bias $\beta_{k} = 1 - E_{kk}/E_{s}$, after which its noise variance is $E_{s} E_{kk} / (E_{s} - E_{kk})$ (the SINR is $E_{s}/E_{kk} - 1$). The MR detector filters with $W = D^{-1} H^{H}$, $D = \mathrm{diag}(\lVert h_{k}\rVert^{2})$: with $G = H^{H} H$, its estimate of stream $k$ is unbiased and the noise and interference of the other streams have the variance $(\sigma^{2} G_{kk} + E_{s} \sum_{j \ne k} |G_{kj}|^{2}) / G_{kk}^{2}$ (Ngo, Larsson and Marzetta 2013, eq. (15)). The soft outputs treat each estimate as one constellation symbol in Gaussian noise of that variance.

The max-log LLR of a tree or exhaustive search is

$$ L(b) = \frac{1}{\sigma^{2}}\Bigl(\min_{x:\, b = 1} \lVert y - H x \rVert^{2} - \min_{x:\, b = 0} \lVert y - H x \rVert^{2}\Bigr) $$

§Examples

use comnum_mimo::detection::{Linear, MimoDetector, Sphere};
use comnum_mapping::constellation::Constellation;
use comnum_math::{linalg::matvec, C64};
use ndarray::array;
let c = Constellation::qam(4)?.normalized();
let h = array![[C64::new(1.0, 0.2), C64::new(0.3, -0.5)], [C64::new(-0.4, 0.1), C64::new(0.9, 0.0)]];
let x = [c.points()[2], c.points()[1]];
let y = matvec(&h.view(), &x);                         // noiseless
assert_eq!(Linear::mmse(c.clone()).detect(&h.view(), &y, 1e-3)?, vec![2, 1]);
assert_eq!(Sphere::new(c).detect(&h.view(), &y, 1e-3)?, vec![2, 1]);

§References

  1. P. W. Wolniansky, G. J. Foschini, G. D. Golden and R. A. Valenzuela, “V-BLAST: an architecture for realizing very high data rates over the rich-scattering wireless channel,” Proc. ISSSE, 1998.
  2. E. Agrell, T. Eriksson, A. Vardy and K. Zeger, “Closest point search in lattices,” IEEE Trans. Inf. Theory, 48(8), 2002.
  3. Z. Guo and P. Nilsson, “Algorithm and implementation of the K-best sphere decoding for MIMO detection,” IEEE J. Sel. Areas Commun., 24(3), 2006.

Structs§

Coherent
A detector bound to a channel matrix: the Detect block of a link whose receiver knows the channel; the decided points are those of the detector’s constellation.
Estimates
The estimates $\hat x_{k}$ of the transmitted symbols and the variance of the noise of each, $\hat x_{k} = x_{k} + n_{k}$, $\mathbb{E}|n_{k}|^{2}$ = noise_var[k]: the output of a linear detector, of a message-passing detector (the decoupled channel) and of the decoder of a space-time block code.
KBest
The K-best tree search: breadth first from the last stream, keeping the k paths of smallest partial distance at every level.
Linear
A linear detector (MR, ZF or MMSE) followed by symbol-by-symbol decisions.
Ml
Maximum-likelihood detection by exhaustive search over the $M^{n_{t}}$ hypotheses.
Sic
Successive interference cancellation (V-BLAST): detect the stream of largest post-detection SINR with a linear filter, subtract it, repeat.
Sphere
Exact ML detection by the Schnorr–Euchner sphere decoder.

Enums§

Criterion
Maximum ratio, zero forcing or MMSE.

Constants§

ML_MAX_HYPOTHESES
Largest number of hypotheses $M^{n_{t}}$ of the exhaustive search.

Traits§

MimoDetector
A detector of the model $y = H x + w$.