complex2real_channel#

sionna.phy.mimo.complex2real_channel(y: torch.Tensor, h: torch.Tensor, s: torch.Tensor) tuple[torch.Tensor, torch.Tensor, torch.Tensor][source]#

Transforms a complex-valued MIMO channel into its real-valued equivalent.

Assume the canonical MIMO channel model

\[\mathbf{y} = \mathbf{H}\mathbf{x} + \mathbf{n}\]

where \(\mathbf{y}\in\mathbb{C}^M\) is the received signal vector, \(\mathbf{x}\in\mathbb{C}^K\) is the vector of transmitted symbols, \(\mathbf{H}\in\mathbb{C}^{M\times K}\) is the known channel matrix, and \(\mathbf{n}\in\mathbb{C}^M\) is a noise vector with covariance matrix \(\mathbf{S}\in\mathbb{C}^{M\times M}\).

This function returns the real-valued equivalent representations of \(\mathbf{y}\), \(\mathbf{H}\), and \(\mathbf{S}\), which are used by a wide variety of MIMO detection algorithms (Section VII) [YH2015]. These are obtained by applying complex2real_vector() to \(\mathbf{y}\), complex2real_matrix() to \(\mathbf{H}\), and complex2real_covariance() to \(\mathbf{S}\).

Parameters:
  • y (torch.Tensor) – […, M], torch.complex. Complex-valued received signals.

  • h (torch.Tensor) – […, M, K], torch.complex. Complex-valued channel matrices.

  • s (torch.Tensor) – […, M, M], torch.complex. Complex-valued noise covariance matrices.

Outputs:
  • yr – […, 2M], torch.float. Real-valued equivalent received signals.

  • hr – […, 2M, 2K], torch.float. Real-valued equivalent channel matrices.

  • sr – […, 2M, 2M], torch.float. Real-valued equivalent noise covariance matrices.

Examples

y = torch.complex(torch.randn(4), torch.randn(4))
h = torch.complex(torch.randn(4, 2), torch.randn(4, 2))
s = torch.eye(4, dtype=torch.complex64)
yr, hr, sr = complex2real_channel(y, h, s)