comnum.amplifier_bussgang#

comnum.amplifier_bussgang(model, power, *, saturation=Ellipsis, smoothness=Ellipsis, alpha_a=Ellipsis, beta_a=Ellipsis, alpha_p=Ellipsis, beta_p=Ellipsis)#

Bussgang’s decomposition y = K x + d of a memoryless amplifier driven by a circular complex Gaussian signal: the complex gain and the power of the distortion.

The parameters of each model default to those of pa_rapp() and pa_saleh() (Rapp with p = 2, Saleh’s fit of 1981).

Parameters:
  • model (str) – "rapp" (gain 1, saturation, smoothness) or "saleh" (alpha_a, beta_a, alpha_p, beta_p).

  • power (float) – the input power.

  • saturation (float) – Rapp’s saturation amplitude.

  • smoothness (float) – Rapp’s smoothness p.

  • alpha_a (float) – Saleh’s AM/AM gain.

  • beta_a (float) – Saleh’s AM/AM compression.

  • alpha_p (float) – Saleh’s AM/PM gain (rad).

  • beta_p (float) – Saleh’s AM/PM compression.

Returns:

K and σ_d².

Return type:

tuple[complex, float]

Raises:

ValueError – for an unknown model.

Examples

The TWTA of Bouhadda et al. (2014, Table 3) at 4 dB of input back-off, φ₀ = π/6:

>>> import comnum, math
>>> k, d = comnum.amplifier_bussgang("saleh", 10 ** -0.4, alpha_a=1.0, beta_a=1.0,
...                                 alpha_p=math.pi / 6, beta_p=1.0)
>>> round(k.real, 4), round(k.imag, 4)
(0.5917, 0.1106)