comnum.envelope_series#

comnum.envelope_series(f, n_terms=60)#

The coefficients c_n of the output autocorrelation of a memoryless envelope nonlinearity f driven by a circular complex Gaussian signal of unit power (P. Banelli and S. Cacopardi, IEEE Trans. Commun. 48(3), 2000, eq. 7): c_0 is the useful power |α|² (Bussgang), the term n has the input spectrum convolved 2n + 1 times with itself, and the coefficients sum to the output power.

Parameters:
  • f (callable) – the complex output envelope A(r) exp(jΦ(r)) of an input envelope r (vectorised over a NumPy array).

  • n_terms (int) – the number of coefficients.

Returns:

c_0, …, c_{n_terms - 1}.

Return type:

numpy.ndarray

Raises:

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

Examples

>>> import comnum, numpy as np
>>> c = comnum.envelope_series(lambda r: np.minimum(r, np.sqrt(2.0)), 60)  # 3 dB IBO
>>> round(float(c.sum()), 4), round(float(1 - np.exp(-2.0)), 4)
(0.8647, 0.8647)