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)