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}\), andcomplex2real_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)