comnum.oamp_state_evolution#
- comnum.oamp_state_evolution(constellation, singular_values, n_tx, noise_var, iterations, *, linear='lmmse', px=None, real=False)#
The empirical state evolution of OAMP with the optimal denoiser (Ma & Ping 2017, eqs. 32 and 39) for the singular values of a channel.
- Parameters:
constellation (Constellation) – the alphabet of every stream.
singular_values (array_like) – the singular values of the channel.
n_tx (int) – the number of columns of the channel.
noise_var (float) – noise variance per receive antenna.
iterations (int) – iterations.
linear (str) – the linear estimator,
"lmmse","pinv"or"mf".px (array_like, optional) – prior probabilities of the points (uniform by default).
real (bool) – a real model.
- Returns:
noise_var(τ²of every iteration) andmse.- Return type:
- Raises:
ValueError – for an invalid parameter or input (the message names it).
Examples
>>> import comnum, numpy as np >>> c = comnum.Constellation("qam", 4).normalized() >>> h = comnum.mimo_channel(128, 64, comnum.Rng(1)) / np.sqrt(128) >>> lam = np.linalg.svd(h, compute_uv=False) >>> se = comnum.oamp_state_evolution(c, lam, 64, 0.3, 10) >>> bool(se["mse"][-1] < se["mse"][0]) True