EPDetector#

class sionna.phy.ofdm.EPDetector(output: str, resource_grid: sionna.phy.ofdm.resource_grid.ResourceGrid, stream_management: sionna.phy.mimo.stream_management.StreamManagement, num_bits_per_symbol: int | None = None, hard_out: bool = False, l: int = 10, beta: float = 0.9, precision: Literal['single', 'double'] | None = None, device: str | None = None, **kwargs)[source]#

Bases: sionna.phy.ofdm.detection.OFDMDetector

Expectation Propagation (EP) detector for OFDM MIMO transmissions.

This block wraps the MIMO EP detector for use with the OFDM waveform. Both detection of symbols or bits with either soft- or hard-decisions are supported. The OFDM and stream configuration are provided by a ResourceGrid and StreamManagement instance, respectively. The actual detector is an instance of EPDetector.

Parameters:
  • output (str) – Type of output, either “bit” or “symbol”

  • resource_grid (sionna.phy.ofdm.resource_grid.ResourceGrid) – ResourceGrid to be used

  • stream_management (sionna.phy.mimo.stream_management.StreamManagement) – StreamManagement to be used

  • num_bits_per_symbol (int | None) – Number of bits per constellation symbol, e.g., 4 for QAM16. Only required for constellation_type in [“qam”, “pam”].

  • hard_out (bool) – If True, the detector computes hard-decided bit values or constellation point indices instead of soft-values.

  • l (int) – Number of iterations

  • beta (float) – Parameter \(\beta\in[0,1]\) for update smoothing

  • precision (Literal['single', 'double'] | None) – Precision used for internal calculations and outputs. If set to None, precision is used.

  • device (str | None) – Device for tensor operations. If None, device is used.

Inputs:
  • y – [batch_size, num_rx, num_rx_ant, num_ofdm_symbols, fft_size], torch.complex. Received OFDM resource grid after cyclic prefix removal and FFT.

  • h_hat – [batch_size, num_rx, num_rx_ant, num_tx, num_streams_per_tx, num_ofdm_symbols, num_effective_subcarriers], torch.complex. Channel estimates for all streams from all transmitters.

  • err_var – [Broadcastable to shape of h_hat], torch.float. Variance of the channel estimation error.

  • no – [batch_size, num_rx, num_rx_ant] (or only the first n dims), torch.float. Variance of the AWGN.

Outputs:

z

One of:

[batch_size, num_tx, num_streams, num_data_symbols*num_bits_per_symbol], torch.float. LLRs or hard-decisions for every bit of every stream, if output equals “bit”.

[batch_size, num_tx, num_streams, num_data_symbols, num_points], torch.float or [batch_size, num_tx, num_streams, num_data_symbols], torch.int32. Logits or hard-decisions for constellation symbols for every stream, if output equals “symbol”. Hard-decisions correspond to the symbol indices.