comnum.mimo_channel#

comnum.mimo_channel(n_rx, n_tx, rng, *, k_factor=0.0, rx_correlation=Ellipsis, tx_correlation=Ellipsis)#

Flat MIMO channel matrices: Rayleigh or Rician fading, with exponential antenna correlation (Kronecker model).

H = √(K/(K+1)) H_LOS + √(1/(K+1)) L_r G L_tᵀ with G of independent CN(0, 1) entries, L Lᴴ the exponential correlation [R]_ij = ρ^(j-i), and H_LOS all ones; every entry has unit mean power.

Parameters:
  • n_rx (int) – receive antennas.

  • n_tx (int) – transmit antennas.

  • rng (Rng) – the generator.

  • k_factor (float) – Rician factor K (linear, 0 for Rayleigh).

  • rx_correlation (complex) – correlation ρ of adjacent receive antennas.

  • tx_correlation (complex) – correlation ρ of adjacent transmit antennas.

Returns:

one matrix (n_rx, n_tx) (complex128); mimo_channels() draws one per channel use.

Return type:

numpy.ndarray

Raises:

ValueError – for an invalid parameter or input (the message names it).

Examples

>>> import comnum
>>> comnum.mimo_channel(4, 2, comnum.Rng(1)).shape
(4, 2)