SpatialChannelFilter#

class sionna.phy.ofdm.SpatialChannelFilter(cov_mat: torch.Tensor, last_step: bool)[source]#

Bases: sionna.phy.object.Object

Implements linear minimum mean square error (LMMSE) smoothing.

We consider the following model:

\[\mathbf{y} = \mathbf{h} + \mathbf{n}\]

where \(\mathbf{y}\in\mathbb{C}^{M}\) is the received signal vector, \(\mathbf{h}\in\mathbb{C}^{M}\) is the channel vector to be estimated with covariance matrix \(\mathbb{E}\left[ \mathbf{h} \mathbf{h}^{\mathsf{H}} \right] = \mathbf{R}\), and \(\mathbf{n}\in\mathbb{C}^M\) is a zero-mean noise vector whose elements have variance \(N_0\).

The channel estimate \(\hat{\mathbf{h}}\) is computed as

\[\hat{\mathbf{h}} &= \mathbf{A} \mathbf{y}\]

where

\[\mathbf{A} = \mathbf{R} \left( \mathbf{R} + N_0 \mathbf{I}_M \right)^{-1}\]

where \(\mathbf{I}_M\) is the \(M \times M\) identity matrix. The estimation error is:

\[\tilde{h} = \mathbf{h} - \hat{\mathbf{h}}\]

The error variances

\[\sigma^2_i = \mathbb{E}\left[\tilde{h}_i \tilde{h}_i^\star \right], 0 \leq i \leq M-1\]

are the diagonal elements of

\[\mathbb{E}\left[\mathbf{\tilde{h}} \mathbf{\tilde{h}}^{\mathsf{H}} \right] = \mathbf{R} - \mathbf{A}\mathbf{R}.\]
Parameters:
  • cov_mat (torch.Tensor) – Spatial covariance matrix of the channel

  • last_step (bool) – Set to True if this is the last interpolation step. Otherwise, set to False. If True, the output is scaled to ensure its variance is as expected by the following interpolation step.

Inputs:
  • h_hat – [batch_size, num_rx, num_tx, num_streams_per_tx, num_ofdm_symbols, num_subcarriers, num_rx_ant], torch.complex. Channel estimates.

  • err_var – [batch_size, num_rx, num_tx, num_streams_per_tx, num_ofdm_symbols, num_subcarriers, num_rx_ant], torch.float. Channel estimation error variances.

Outputs:
  • h_hat – [batch_size, num_rx, num_tx, num_streams_per_tx, num_ofdm_symbols, num_subcarriers, num_rx_ant], torch.complex. Channel estimates smoothed across the spatial dimension.

  • err_var – [batch_size, num_rx, num_tx, num_streams_per_tx, num_ofdm_symbols, num_subcarriers, num_rx_ant], torch.float. The channel estimation error variances of the smoothed channel estimates.