Power Amplifier Modeling#
Power amplification modeling represents a single processing step within the radio-frequency hardware model of transmitting modems.
Each power amplifier model instance implements an equation
distorting complex-valued signal samples \(s(t) \in \mathbb{C}\) feeding into the power amplifier. For time-invariant (i.e. memoryless) models \(f\lbrace s(t), t \rbrace = f\lbrace s(t) \rbrace\). The following figure visualizes the gain characteristics for the implemented amplification models for a saturation point \(s_\mathrm{sat} = 1\).
(Source code
, png
, hires.png
, pdf
)
- class ClippingPowerAmplifier(**kwargs)[source]#
Bases:
PowerAmplifier
Model of a clipping power amplifier.
Complex signal samples with amplitudes above \(s_\mathrm{sat} \in \mathbb{R}\) will be clipped to the maximum amplitude value. In case of clipping, the respective sample angles will be preserved, so that
\[s'(t) = \frac{s(t)}{|s(t)|} \cdot \min{(|s(t)|, s_\mathrm{sat})} \text{.}\]- Parameters:
kwargs (Any) – PowerAmplifier base class initialization arguments.
- model(input_signal)[source]#
Model signal amplification characteristics.
- Parameters:
input_signal (np.ndarray) – Sample vector of the signal feeding into the power amplifier.
- Returns:
Distorted signal after amplification modeling.
- Return type:
np.ndarray
- yaml_tag: str = 'Clipping'#
YAML serialization tag.
- class CustomPowerAmplifier(input, gain, phase, **kwargs)[source]#
Bases:
PowerAmplifier
Model of a customized power amplifier.
- Parameters:
input (np.ndarray) –
gain (np.ndarray) –
phase (np.ndarray) –
kwargs (Any) – PowerAmplifier base class initialization arguments.
- Raises:
ValueError – If input, gain, and phase are not vectors of identical length.
- class PowerAmplifier(saturation_amplitude=inf, adjust_power=False)[source]#
Bases:
Serializable
,Visualizable
Base class of a power-amplifier model.
Implements a distortion-less amplification model
\[s'(t) = s(t) \text{,}\]which may be overwritten by classes inheriting from this base.
- Parameters:
- model(input_signal)[source]#
Model signal amplification characteristics.
- Parameters:
input_signal (np.ndarray) – Sample vector of the signal feeding into the power amplifier.
- Returns:
Distorted signal after amplification modeling.
- Return type:
np.ndarray
- plot(axes=None, *, title=None, samples=None)[source]#
Plot the power amplifier distortion characteristics.
Generates a matplotlib plot depicting the phase/amplitude.
- Parameters:
axes (VAT, optional) – The axis object into which the information should be plotted. If not specified, the routine will generate and return a new figure.
title (str, optional) – Title of the generated plot.
samples (np.ndarray, optional) – Sample points at which to evaluate the characteristics. In other words, the x-axis of the resulting characteristics plot.
- Return type:
- send(input_signal)[source]#
Model signal amplification characteristics.
Internally calls the model subroutine of power-amplifier models implementing this prototype-class.
- Parameters:
input_signal (np.ndarray) – Sample vector of the signal feeding into the power amplifier.
- Returns:
Distorted signal after amplification modeling.
- Return type:
np.ndarray
- adjust_power: bool#
Power adjustment flag.
If enabled, the power amplifier will normalize the distorted signal after propagation modeling.
- property saturation_amplitude: float#
Cut-off point for the linear behaviour of the amplification.
Referred to as \(s_\mathrm{sat} \ \mathbb{R}_{+}\) in equations.
- Returns:
Saturation amplitude in Volt.
- Return type:
- Raises:
ValueError – If amplitude is smaller than zero.
- class RappPowerAmplifier(smoothness_factor=1.0, **kwargs)[source]#
Bases:
PowerAmplifier
Model of a power amplifier according to Rapp’s model.
Implements a saturation characteristic according to
\[s'(t) = s(t) \cdot \left( 1 + \left( \frac{|s(t)|}{s_\mathrm{sat}} \right)^{2p_\mathrm{Rapp}} \right)^{-\frac{1}{2p_\mathrm{Rapp}}} \text{,}\]where \(p_\mathrm{Rapp} \in \lbrace x \in \mathbb{R} | x \geq 1 \rbrace\) denotes the smoothness factor of the saturation curve.
See Rapp[1] for further details.
Clipping Power Amplifier object initialization.
- Parameters:
smoothness_factor (float, optional) – Smoothness factor of the amplification saturation characteristics.
kwargs (Any) – PowerAmplifier base class initialization arguments.
- model(input_signal)[source]#
Model signal amplification characteristics.
- Parameters:
input_signal (np.ndarray) – Sample vector of the signal feeding into the power amplifier.
- Returns:
Distorted signal after amplification modeling.
- Return type:
np.ndarray
- property smoothness_factor: float#
Smoothness factor of the amplification saturation characteristics.
Also referred to as Rapp-factor \(p_\mathrm{Rapp}\).
- Returns:
Smoothness factor.
- Return type:
- Raises:
ValueError – If smoothness factor is smaller than one.
- yaml_tag: str = 'Rapp'#
YAML serialization tag.
- class SalehPowerAmplifier(amplitude_alpha, amplitude_beta, phase_alpha, phase_beta, **kwargs)[source]#
Bases:
PowerAmplifier
Model of a power amplifier according to Saleh.
Implements a saturation characteristic according to
\[s'(t) = s(t) \cdot A\lbrace s(t) \rbrace e^{\mathrm{j} \Phi\lbrace s(t) \rbrace}\]where
\[A\lbrace s \rbrace = \frac{ \alpha_\mathrm{a} \frac{|s|}{s_\mathrm{sat}} } { 1 + \beta_\mathrm{a} \frac{|s|^2}{s_\mathrm{sat}^2} }\]describes the amplitude model depending on two parameters \(\alpha_\mathrm{a}, \beta_\mathrm{a} \in \mathbb{R}_{+}\) and
\[\Phi\lbrace s \rbrace = \frac{ \alpha_\Phi \frac{|s|}{s_\mathrm{sat}} } { 1 + \beta_\Phi \frac{|s|^2}{s_\mathrm{sat}^2} }\]describes the phase model depending on \(\alpha_\Phi, \beta_\Phi \in \mathbb{R}\), respectively.
See Saleh[2] for further details.
- Parameters:
- model(input_signal)[source]#
Model signal amplification characteristics.
- Parameters:
input_signal (np.ndarray) – Sample vector of the signal feeding into the power amplifier.
- Returns:
Distorted signal after amplification modeling.
- Return type:
np.ndarray
- property amplitude_alpha: float#
Amplitude model factor \(\alpha_\mathrm{a}\).
- Returns:
Amplitude factor.
- Return type:
- Raises:
ValueError – If the factor is smaller than zero.
- property amplitude_beta: float#
Amplitude model factor \(\beta_\mathrm{a}\).
- Returns:
Amplitude factor.
- Return type:
- Raises:
ValueError – If the factor is smaller than zero.
- phase_alpha: float#
Phase model factor \(\alpha_\Phi\).
- phase_beta: float#
Phase model factor \(\beta_\Phi\).