comnum.amp_state_evolution#

comnum.amp_state_evolution(constellation, beta, noise_var, iterations, *, px=None, real=False)#

The state evolution of LAMA (Jeon et al. 2018, Corollary 2): the variance of the decoupled channel and the predicted MSE of every iteration, in the large-system limit with columns of unit norm.

Parameters:
  • constellation (Constellation) – the alphabet of every stream.

  • beta (float) – the system ratio n_tx / n_rx.

  • noise_var (float) – noise variance per receive antenna, relative to columns of unit norm (β Es / SNR).

  • iterations (int) – iterations.

  • px (array_like, optional) – prior probabilities of the points (uniform by default).

  • real (bool) – a real model.

Returns:

noise_var and mse, one value per iteration.

Return type:

dict

Raises:

ValueError – for an input that is not an array of numbers of the expected shape.

Examples

>>> import comnum
>>> c = comnum.Constellation("qam", 4).normalized()
>>> se = comnum.amp_state_evolution(c, 0.5, 0.05, 20)
>>> bool(se["mse"][-1] < se["mse"][0])
True