comnum.mimo_llr#

comnum.mimo_llr(h, y, constellation, noise_var, method='mmse', *, k=Ellipsis, iterations=Ellipsis)#

Bit log-likelihood ratios of a MIMO link (positive for a 0, most significant bit first), the LLR sequence of every transmitted stream: exact per-stream LLRs after the unbiased linear filter for "mr", "zf" and "mmse", max-log over all hypotheses for "ml", over the final list for "kbest", exact LLRs of the decoupled channel for "amp" and "oamp".

Parameters:
  • h (array_like) – the channel, (n_rx, n_tx) for every vector or (n, n_rx, n_tx).

  • y (array_like) – the received streams, (n_rx, n) (or one vector (n_rx,)).

  • constellation (Constellation) – the alphabet of every stream.

  • noise_var (float) – noise variance per receive antenna E|w_i|².

  • method (str) – "mr", "zf", "mmse", "ml", "kbest", "amp" or "oamp" (the SIC and sphere detectors have no soft output).

  • k (int) – paths kept by "kbest".

  • iterations (int) – iterations of "amp" and "oamp".

Returns:

(n_tx, n · log2 M), the LLRs of the symbols of every stream in order (for one vector (n_rx,), the n_tx · log2 M LLRs stream after stream), float64.

Return type:

numpy.ndarray

Raises:

ValueError – for an invalid parameter or input (the message names it).