real2complex_channel#

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

Transforms a real-valued MIMO channel into its complex-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 transforms the real-valued equivalent representations of \(\mathbf{y}\), \(\mathbf{H}\), and \(\mathbf{S}\), as, e.g., obtained with the function complex2real_channel(), back to their complex-valued equivalents (Section VII) [YH2015].

Parameters:
  • y (torch.Tensor) – […, 2M], torch.float. Real-valued received signals.

  • h (torch.Tensor) – […, 2M, 2K], torch.float. Real-valued channel matrices.

  • s (torch.Tensor) – […, 2M, 2M], torch.float. Real-valued noise covariance matrices.

Outputs:
  • yc – […, M], torch.complex. Complex-valued equivalent received signals.

  • hc – […, M, K], torch.complex. Complex-valued equivalent channel matrices.

  • sc – […, M, M], torch.complex. Complex-valued equivalent noise covariance matrices.

Examples

yr = torch.randn(8)
hr = torch.randn(8, 4)
sr = torch.eye(8)
yc, hc, sc = real2complex_channel(yr, hr, sr)