List2LLR#
- class sionna.phy.mimo.List2LLR(precision: Literal['single', 'double'] | None = None, device: str | None = None, **kwargs)[source]#
Bases:
sionna.phy.block.BlockAbstract class defining a callable to compute LLRs from a list of candidate vectors (or paths) provided by a MIMO detector.
The following channel model is assumed
\[\bar{\mathbf{y}} = \mathbf{R}\bar{\mathbf{x}} + \bar{\mathbf{n}}\]where \(\bar{\mathbf{y}}\in\mathbb{C}^S\) are the channel outputs, \(\mathbf{R}\in\mathbb{C}^{S\times S}\) is an upper-triangular matrix, \(\bar{\mathbf{x}}\in\mathbb{C}^S\) is the transmitted vector whose entries are uniformly and independently drawn from the constellation \(\mathcal{C}\), and \(\bar{\mathbf{n}}\in\mathbb{C}^S\) is white noise with \(\mathbb{E}\left[\bar{\mathbf{n}}\right]=\mathbf{0}\) and \(\mathbb{E}\left[\bar{\mathbf{n}}\bar{\mathbf{n}}^{\mathsf{H}}\right]=\mathbf{I}\).
It is assumed that a MIMO detector such as
KBestDetectorproduces \(K\) candidate solutions \(\bar{\mathbf{x}}_k\in\mathcal{C}^S\) and their associated distance metrics \(d_k=\lVert \bar{\mathbf{y}} - \mathbf{R}\bar{\mathbf{x}}_k \rVert^2\) for \(k=1,\dots,K\). This layer can also be used with the real-valued representation of the channel.- Parameters:
- Inputs:
y – […, M], torch.complex or torch.float. Channel outputs of the whitened channel.
r – […, num_streams, num_streams], same dtype as
y. Upper triangular channel matrix of the whitened channel.dists – […, num_paths], torch.float. Distance metric for each path (or candidate).
path_inds – […, num_paths, num_streams], torch.int32. Symbol indices for every stream of every path (or candidate).
path_syms – […, num_paths, num_streams], same dtype as
y. Constellation symbol for every stream of every path (or candidate).
- Outputs:
llr – […, num_streams, num_bits_per_symbol], torch.float. LLRs for all bits of every stream.
Notes
An implementation of this class does not need to make use of all of the provided inputs which enable various different implementations.