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.LMMSEChannelEstimatorLinear 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 inPUSCHDMRSConfig. 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,
precisionis 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.