real2complex_covariance#

sionna.phy.mimo.real2complex_covariance(q: torch.Tensor) torch.Tensor[source]#

Transforms a real-valued covariance matrix to its complex-valued equivalent.

Assume a proper complex random variable \(\mathbf{z}\in\mathbb{C}^M\) [ProperRV] with covariance matrix \(\mathbf{R}= \in\mathbb{C}^{M\times M}\) and real and imaginary parts \(\mathbf{x}\in \mathbb{R}^M\) and \(\mathbf{y}\in \mathbb{R}^M\), respectively. This function transforms the given covariance matrix of the real-valued equivalent vector \(\tilde{\mathbf{z}}=\left[\mathbf{x}^{\mathsf{T}}, \mathbf{y}^{\mathsf{T}} \right ]^{\mathsf{T}}\in\mathbb{R}^{2M}\), which is given as [CovProperRV]

\[\begin{split}\mathbb{E}\left[\tilde{\mathbf{z}}\tilde{\mathbf{z}}^{\mathsf{H}} \right] = \begin{pmatrix} \frac12\Re\{\mathbf{R}\} & -\frac12\Im\{\mathbf{R}\}\\ \frac12\Im\{\mathbf{R}\} & \frac12\Re\{\mathbf{R}\} \end{pmatrix},\end{split}\]

into is complex-valued equivalent \(\mathbf{R}\).

Parameters:

q (torch.Tensor) – […, 2M, 2M], torch.float. Real-valued covariance matrix.

Outputs:

r – […, M, M], torch.complex. Complex-valued equivalent covariance matrix.

Examples

q = torch.eye(4) * 0.5
r = real2complex_covariance(q)
# r.shape = torch.Size([2, 2])