comnum.mimo_capacity#

comnum.mimo_capacity(h, snr_db, *, water_filling=False)#

Capacity of MIMO channel realisations (bits per channel use) at the SNR ρ = P/σ²: log2 det(I + ρ/n_tx H Hᴴ) with equal power, or water-filling on the eigenmodes.

Parameters:
  • h (array_like) – (n, n_rx, n_tx), one matrix per realisation (one matrix (n_rx, n_tx) is one realisation).

  • snr_db (float) – total transmit power over the noise variance per receive antenna (dB).

  • water_filling (bool) – channel knowledge at the transmitter.

Returns:

the capacity of every realisation, (n,).

Return type:

numpy.ndarray

Raises:

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

Examples

>>> import comnum, numpy as np
>>> comnum.mimo_capacity(np.eye(2), 10 * np.log10(10.0)).round(6).tolist()
[5.169925]