PUSCHLMMSEChannelEstimator#

class sionna.phy.nr.PUSCHLMMSEChannelEstimator(resource_grid, dmrs_length: int, dmrs_additional_position: int, num_cdm_groups_without_data: int, cov_mat_time: torch.Tensor, cov_mat_freq: torch.Tensor, cov_mat_space: torch.Tensor | None = None, order: str = 't-f', precision: str | None = None, device: str | None = None, **kwargs)[source]#

Bases: sionna.phy.ofdm.channel_estimation.LMMSEChannelEstimator

Linear minimum mean square error (LMMSE) channel estimation for NR PUSCH transmissions.

After LS estimation with CDM/OCC despreading at the pilot positions, full-grid channel estimates and corresponding error variances are computed using LMMSE estimation.

The implementation is similar to that of LMMSEChannelEstimator. However, it additionally takes into account the separation of streams in the same CDM group as defined in PUSCHDMRSConfig. This is done through frequency and time averaging of adjacent LS channel estimates.

Parameters:
  • resource_grid – ResourceGrid to be used.

  • dmrs_length (int) – Length of DMRS symbols. Must be 1 or 2. See PUSCHDMRSConfig.

  • dmrs_additional_position (int) – Number of additional DMRS symbols. Must be 0, 1, 2, or 3. See PUSCHDMRSConfig.

  • num_cdm_groups_without_data (int) – Number of CDM groups masked for data transmissions. Must be 1, 2, or 3. See PUSCHDMRSConfig.

  • cov_mat_time (torch.Tensor) – Time covariance matrix of the channel.

  • cov_mat_freq (torch.Tensor) – Frequency covariance matrix of the channel.

  • cov_mat_space (torch.Tensor | None) – Spatial covariance matrix of the channel. Only required if spatial smoothing is requested (see order).

  • order (str) – Order in which to perform interpolation and optional smoothing. For example, "t-f-s" means that interpolation across the OFDM symbols is performed first ("t": time), followed by interpolation across the sub-carriers ("f": frequency), and finally smoothing across the receive antennas ("s": space). Similarly, "f-t" means interpolation across the sub-carriers followed by interpolation across the OFDM symbols and no spatial smoothing. The spatial covariance matrix (cov_mat_space) is only required when spatial smoothing is requested. Time and frequency interpolation are not optional to ensure that a channel estimate is computed for all resource elements.

  • precision (str | None) – Precision used for internal calculations and outputs. If set to None, precision is used.

  • device (str | None) – Device for computation.

Inputs:
  • y – [batch_size, num_rx, num_rx_ant, num_ofdm_symbols, fft_size], torch.complex. Observed resource grid.

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

Outputs:
  • 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 across the entire resource grid for all transmitters and streams.

  • err_var – Same shape as h_hat, torch.float. Channel estimation error variance across the entire resource grid for all transmitters and streams.