MIMO Channel Generation

MIMO Channels: The Foundation of Modern Wireless

Multiple-input multiple-output (MIMO) uses multiple antennas at both transmitter and receiver. Generating realistic MIMO channel matrices with proper spatial correlation is essential for simulating 4G, 5G, and Wi-Fi MIMO systems.

Definition:

MIMO Channel Matrix

The NrΓ—NtN_r \times N_t MIMO channel matrix H\mathbf{H} has entry hijh_{ij} representing the complex gain from transmit antenna jj to receive antenna ii:

y=Hx+n\mathbf{y} = \mathbf{H}\mathbf{x} + \mathbf{n}

For i.i.d. Rayleigh fading: hij∼CN(0,1)h_{ij} \sim \mathcal{CN}(0, 1).

def iid_mimo_channel(Nr, Nt, rng=None):
    if rng is None:
        rng = np.random.default_rng()
    return (rng.standard_normal((Nr, Nt)) + 1j*rng.standard_normal((Nr, Nt))) / np.sqrt(2)

Definition:

Kronecker Spatial Correlation Model

The Kronecker model separates transmit and receive correlations:

H=Rr1/2Hw(Rt1/2)T\mathbf{H} = \mathbf{R}_r^{1/2} \mathbf{H}_w (\mathbf{R}_t^{1/2})^T

where Hw\mathbf{H}_w has i.i.d. CN(0,1)\mathcal{CN}(0,1) entries, Rr\mathbf{R}_r is the NrΓ—NrN_r \times N_r receive correlation, and Rt\mathbf{R}_t is the NtΓ—NtN_t \times N_t transmit correlation.

def kronecker_mimo(Nr, Nt, Rr, Rt, rng=None):
    if rng is None:
        rng = np.random.default_rng()
    Lr = np.linalg.cholesky(Rr)
    Lt = np.linalg.cholesky(Rt)
    Hw = (rng.standard_normal((Nr, Nt)) + 1j*rng.standard_normal((Nr, Nt))) / np.sqrt(2)
    return Lr @ Hw @ Lt.T

The Kronecker model assumes separable TX/RX correlations. This is a good approximation for moderate correlations but breaks down for keyhole channels.

Definition:

Exponential Correlation Matrix

For a uniform linear array (ULA) with correlation coefficient ρ\rho:

[R]ij=ρ∣iβˆ’j∣[\mathbf{R}]_{ij} = \rho^{|i-j|}

This Toeplitz matrix is positive definite for ∣ρ∣<1|\rho| < 1 and captures the exponential decay of correlation with antenna separation.

def exp_corr_matrix(N, rho):
    return rho ** np.abs(np.arange(N)[:, None] - np.arange(N)[None, :])

Theorem: MIMO Channel Capacity

The ergodic capacity of an NrΓ—NtN_r \times N_t MIMO channel with equal power allocation is:

C=E ⁣[log⁑2det⁑ ⁣(I+SNRNtHHH)]C = E\!\left[\log_2 \det\!\left(\mathbf{I} + \frac{\text{SNR}}{N_t}\mathbf{H}\mathbf{H}^H\right)\right]

For i.i.d. Rayleigh fading at high SNR, CC grows linearly with min⁑(Nt,Nr)\min(N_t, N_r): each spatial stream adds approximately log⁑2(1+SNR/Nt)\log_2(1 + \text{SNR}/N_t) bits/s/Hz.

MIMO creates parallel spatial channels. The number of independent channels equals the rank of H\mathbf{H}, which is min⁑(Nt,Nr)\min(N_t, N_r) for i.i.d. fading.

Theorem: Correlation Reduces MIMO Capacity

Spatial correlation always reduces MIMO capacity:

Ccorr≀Ci.i.d.C_{\text{corr}} \le C_{\text{i.i.d.}}

with equality only when Rt=I\mathbf{R}_t = \mathbf{I} and Rr=I\mathbf{R}_r = \mathbf{I}. High correlation (βˆ£Οβˆ£β†’1|\rho| \to 1) makes the channel matrix rank-deficient, reducing the number of effective spatial streams.

Correlated antennas see similar channels, reducing the spatial multiplexing gain. This is why antenna spacing of Ξ»/2\lambda/2 or more is preferred.

Example: Generating Correlated MIMO Channels

Generate 4x4 MIMO channels with exponential correlation ρ=0.7\rho = 0.7 at both TX and RX. Verify the correlation structure.

MIMO Channel Matrix Visualization

Visualize the magnitude and phase of MIMO channel matrices with adjustable correlation and antenna configuration.

Parameters

Common Mistake: Using Real Cholesky for Complex Correlation

Mistake:

Using np.linalg.cholesky(R) when R\mathbf{R} is complex Hermitian, but forgetting to use Lt.conj().T instead of Lt.T in the Kronecker model.

Correction:

For complex correlation matrices, use H=LrHwLtH\mathbf{H} = \mathbf{L}_r \mathbf{H}_w \mathbf{L}_t^H with Hermitian transpose. For real exponential correlation, .T suffices.

MIMO

Multiple-Input Multiple-Output: a system using multiple antennas at both transmitter and receiver for spatial multiplexing or diversity.

Kronecker Model

A MIMO channel model that separates transmit and receive spatial correlations: H=Rr1/2HwRtT/2\mathbf{H} = \mathbf{R}_r^{1/2}\mathbf{H}_w\mathbf{R}_t^{T/2}.