Memoryless Nonlinearity
Apply amplifier models to complex baseband signal
Libraries:
Communications Toolbox /
RF Impairments and Components
Description
The Memoryless Nonlinearity block applies amplifier models to a complex baseband signal. Use this block to model memoryless nonlinear impairments caused by signal amplification in the radio frequency (RF) transmitter or receiver. For more information, see Amplifier Model Methods.
Examples
Add Saleh Model of Power Amplifier to 16QAM Signal in Simulink
This example applies the Saleh method of memoryless nonlinearity to a 16QAM modulated signal. To show the Saleh model of a power amplifier, the example applies exaggerated levels that are not typical for modern radios.
In this example, the cm_mnl_saleh_16qam
model 16QAM modulates a signal containing a complete set of constellation points and passes them to Memoryless Nonlinearity blocks configured to apply the Saleh method with the default AM/AM and AM/PM distortion settings, AM/AM distortion alone, and AM/PM distortion alone. The model includes Constellation Diagram blocks after each Memoryless Nonlinearity block so you can analyze the impact of each impairment on the constellation.
In the model, you can click the Plot Transfer Curve Callback Button (Simulink) block to run the testPA.m
helper function. The testPA
helper function plots this amplifier transfer curve for the Saleh method in its default configuration to show the nonlinear inputtooutput signal. After amplification, plotted constellation points get displaced according to the inputtooutput characteristics of the amplifier model. The voltage for each constellation point determines the direction and magnitude of distortion for each point in the constellation.
This set of constellation diagrams shows the constellation distortion for the amplifier configured to distort the amplitude and phase individually and together.
The
AMAM
diagram shows the signal with amplitudetoamplitude distortion but no amplitudetophase distortion. AM/AM distortion displaces constellation points radially away from or toward the origin. For the Saleh method and specified operating characteristics, the inner corner constellation points move away from the origin and the outer corner constellation points move toward the origin. The noncorner constellation points move a negligible amount.The
AMPM
diagram shows the signal with amplitudetophase distortion but no amplitudetoamplitude distortion. AM/PM distortion causes rotation of constellation points. Constellation points farther from the origin are more displaced than points closer to the origin.The
AMAM and AMPM
diagram shows the signal with amplitudetoamplitude distortion and amplitudetophase distortion. In this diagram, the constellation points move away from or toward the origin and rotate counterclockwise.
This scatter plot of the constellation points shows points displaced by AM/AM distortion only. The scatterplot
function used here plots constellation point locations labeled to highlight the relative distance each point has moved from the ideal constellation point location. To analyze the magnitude and direction each constellation point moved, you would need to replot the input and output characteristic curve for the current operating characteristics.
To explore the model try adjusting settings for the Memoryless Nonlinearity blocks to:
Apply different impairment model methods.
Apply different levels of impairments.
Update the
testPA.m
helper function to plot and analyze input and output characteristics at nondefault Memoryless Nonlinearity block settings.
Add RF Impairments to DQPSK Signal
This example applies RF impairments to a signal modulated by the differential quadrature phase shift keying (DQPSK) method. To show the RF impairments, the example applies exaggerated levels that are not typical levels for modern radios.
In this example, the slex_rcvrimpairments_dqpsk
model DQPSKmodulates a random signal and applies various RF impairments to the signal. The model uses impairment blocks from the RF Impairments library. The InitFun
callback function initializes simulation variables. For more information, see Model Callbacks (Simulink).
After the impairment blocks, the signal forks into two paths. One path applies DC blocking, automatic gain control (AGC), and I/Q imbalance compensation to the signal before demodulation. The signal on the correction path is adjusted by the DC Blocker, AGC, and I/Q Imbalance Compensator blocks. Because the signal is DQPSK modulated, no carrier synchronization is required. The second path goes directly to demodulation. After demodulation, an error rate calculation is performed on both signals. The model includes Constellation Diagram blocks after modulation, before correction, and after correction so that you can analyze the constellation.
When the model runs, constellation diagrams plot the signal at these stages in the simulation:
The
After Modulation
constellation diagram shows the reference DQPSKmodulated signal constellation.The
Before Correction
constellation diagram shows the attenuated and distorted signal constellation.The
After Correction
constellation diagram shows the signal has been amplified and improved after the correction blocks.
The error rate for the demodulated signal without AGC is primarily caused by free space path loss and I/Q imbalance. The QPSK modulation minimizes the effects of the other impairments.
Error rate for corrected signal: 0.000 Error rate for uncorrected signal: 0.042
To explore the model try:
Adjusting RF impairment settings, rerun the model, and notice the changes to the constellation diagrams and error rates.
Modifying the model to add an equalizer stage before the demodulation. Equalization has inherent ability to reduce some of the distortion caused by impairments. For more information, see Equalization.
Ports
Input
In1 — Input RF baseband signal
scalar  column vector
Input RF baseband signal, specified as a scalar or column vector.
Data Types: double
 single
Complex Number Support: Yes
Output
Out1 — Output RF baseband signal
scalar  column vector
Output RF baseband signal, returned as a scalar or column vector. The output is of the same data type as the input.
Parameters
To edit block parameters interactively, use the Property Inspector. From the Simulink^{®} Toolstrip, on the Simulation tab, in the Prepare gallery, select Property Inspector.
Main Tab
Model — Amplifier nonlinearity model
cubic
(default)  ampm
 modifiedrapp
 saleh
Specify the amplifier nonlinearity model as one of the following methods:
cubic
ampm
modifiedrapp
saleh
For more information, see Amplifier Model Methods.
Linear power gain (dB) — Linear gain of amplifier
0
(default)  real scalar
Linear gain, specified as a scalar in dB.
Dependencies
To enable this parameter, set Model to cubic
or
modifiedrapp
.
Type of Nonlinearity — Type of nonlinearity
OIP3
(default)  IIP3
 IP1dB
 OP1dB
 IPsat
 OPsat
Thirdorder nonlinearity type in dBm, specified as one of these options:
IIP3
— Input thirdorder intercept pointOIP3
— Output thirdorder intercept pointIP1dB
— Input 1 dB compression pointOP1dB
— Output 1 dB compression pointIPsat
— Input saturation pointOPsat
— Output saturation point
Dependencies
To enable this parameter, set Model to cubic
.
IIP3 (dBm) — Input thirdorder intercept point
Inf
(default)  real positive number
Input thirdorder intercept point, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
IIP3
.
OIP3 (dBm) — Output thirdorder intercept point
Inf
(default)  real positive number
Output thirdorder intercept point, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
OIP3
.
IP1dB (dBm) — Input 1 dB compression point
Inf
(default)  real positive number
Input 1 dB compression point, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
IP1dB
.
OP1dB (dBm) — Output 1 dB compression point
Inf
(default)  real positive number
Output 1 dB compression point, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
OP1dB
.
IPsat (dBm) — Input saturation point
Inf
(default)  real positive number
Input saturation point, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
IPsat
.
OPsat (dBm) — Output saturation point
Inf
(default)  real positive number
Output saturation point, specified as a positive real number in dBm.
Dependencies
To enable this parameter, set Model to cubic
and
Type of Nonlinearity to
OPsat
.
Lookup table (Pin(dBm), Pout(dBm), deg) — Lookup table
[ 25, 5, 1; 10, 20, 2; 0, 27, 5; 5, 28,
12 ]
(default)  Mby3 real matrix
Table lookup entries specified as a real Mby3 matrix. The table expresses the model output power dBm level in matrix column 2 and the model phase change in degrees in matrix column 3 as related to the absolute value of the input signal power of matrix column 1 for the AM/AMAM/PM model method. The column 1 input power must increase monotonically.
Dependencies
To enable this parameter, set Model to ampm
.
Output saturation level (V) — Output saturation level
1
(default)  real positive number
Voltage output saturation level, specified as a real positive number in dBm.
Dependencies
To enable this parameter, set Model to
modifiedrapp
.
Magnitude smoothness factor — Magnitude smoothness factor
2
(default)  real positive number
Magnitude smoothness factor for the AM/AM calculations of the modified Rapp model method, specified as a positive real number.
Dependencies
To enable this parameter, set Model to
modifiedrapp
.
Phase gain (rad) — Phase gain
0.45
(default)  real scalar
Phase gain for the AM/PM calculations of the modified Rapp model method, specified as a real scalar in radians.
Dependencies
To enable this parameter, set Model to
modifiedrapp
.
Phase saturation — Phase saturation
0.88
(default)  real positive number
Phase saturation for the AM/PM calculations of the modified Rapp model method, specified as a positive real number.
Dependencies
To enable this parameter, set Model to
modifiedrapp
.
Phase smoothness factor — Phase smoothness factor
3.43
(default)  positive scalar  positive twoelement vector
Phase smoothness factor for the AM/PM calculations of the modified Rapp model method, specified as a positive scalar or a positive twoelement vector.
Dependencies
To enable this parameter, set Model to
modifiedrapp
.
Input scaling (dB) — Scaling factor for input signal level
0
(default)  nonnegative real number
Scaling factor for input signal level for the Saleh model method, specified as a nonnegative real number in dB.
Dependencies
To enable this parameter, set Model to Saleh
.
AM / AM parameters [alpha beta] — AM/AM conversion parameters
[ 2.1587, 1.1517 ]
(default)  twoelement vector
AM/AM twotuple conversion parameters for the Saleh model method, specified as a twoelement vector of nonnegative real numbers.
Dependencies
To enable this parameter, set Model to saleh
.
AM / PM parameters [alpha beta] — AM/PM conversion parameters
[ 4.0033, 9.1040 ]
(default)  twoelement vector
AM/PM twotuple conversion parameters for the Saleh model method, specified as a twoelement vector of real numbers.
Dependencies
To enable this parameter, set Model to saleh
.
Output scaling (dB) — Scaling factor for output signal level
0
(default)  nonnegative real number
Scaling factor for output signal level for the Saleh model method, specified as nonnegative real number in dB.
Dependencies
To enable this parameter, set Model to saleh
.
Reference load (ohm) — Reference load
1
(default)  positive scalar
Reference load value in ohms, specified as a positive scalar. Use this value to convert between the voltage levels and the signal and noise power levels.
Tunable: Yes
Simulate using — Type of simulation to run
Code generation
(default)  Interpreted execution
Type of simulation to run, specified as Code generation
or
Interpreted execution
.
Code generation
— Simulate the model by using generated C code. The first time you run a simulation, Simulink generates C code for the block. The model reuses the C code for subsequent simulations unless the model changes. This option requires additional startup time, but the speed of the subsequent simulations is faster than with theInterpreted execution
option.Interpreted execution
— Simulate the model by using the MATLAB^{®} interpreter. This option shortens startup time, but the speed of subsequent simulations is slower than with theCode generation
option. In this mode, you can debug the source code of the block.
For more information, see Interpreted Execution vs. Code Generation (Simulink).
Block Characteristics
Data Types 

Multidimensional Signals 

VariableSize Signals 

More About
Amplifier Model Methods
This block provides four options to model a nonlinear amplifier as a memoryless
nonlinearity: cubic
, ampm
,
modifiedrapp
,
saleh
.
The cubic polynomial method uses linear power gain to determine the linear coefficient of a thirdorder polynomial and either IP3, P1dB, or Psat to determine the thirdorder coefficient of the polynomial. The general form of cubic nonlinearity models the AM/AM characteristics as:
$${\text{F}}_{\text{AM/AM}}{\text{(u)=c}}_{\text{1}}\text{\xd7u+}\frac{\text{3}}{\text{4}}{\text{c}}_{\text{3}}{\text{\xd7u}}^{\text{3}}$$
where F_{AM/AM}(u)
is the
magnitude of the output signal, u is the magnitude of the
input signal, c_{1} is the coefficient of
the linear gain term, and c_{3} is the
coefficient of the cubic gain term. The method takes the results for IIP3, OIP3,
IP1dB, OP1dB, IPsat, and OPsat from [4]. It computes
the c_{3} coefficient for these
nonlinearity types using the following equations:
Nonlinearity Type  Parameter  Equation 

Input thirdorder intercept point  IIP3 (dBm) 
$${c}_{3}=\frac{4{c}_{1}}{3\times {10}^{[(IIP330)/10]}}$$
IIP3 is given in dBm. 
Output thirdorder intercept point  OIP3 (dBm) 
$${c}_{3}=\frac{4{c}_{1}^{3}}{3\times {10}^{[(OIP330)/10]}}$$
OIP3 is given in dBm. 
Input 1 dB gain compression power  IP1dB (dBm) 
$${c}_{3}=\frac{2{c}_{1}({10}^{\raisebox{1ex}{$19$}\!\left/ \!\raisebox{1ex}{$20$}\right.}10)}{15\times {10}^{[(IP1dB30)/10]}}$$
IP1dB is given in dBm. 
Output 1 dB gain compression power  OP1dB (dBm) 
$${c}_{3}=\frac{2{c}_{1}^{3}({10}^{\raisebox{1ex}{$19$}\!\left/ \!\raisebox{1ex}{$20$}\right.}10)}{15\times {10}^{[(OP1dB30LGdB+1)/10]}}$$
OP1dB is given in dBm, and LGdB is the linear gain in dB. 
Input saturation power  IPsat (dBm) 
$${c}_{3}=\frac{4{c}_{1}}{9\times {10}^{[(IPsat30)/10]}}$$
IPsat is given in dBm. 
Output saturation power  OPsat (dBm) 
$${c}_{3}=\frac{16{c}_{1}^{3}}{81\times {10}^{[(OPsat30)/10]}}$$
OPsat is given in dBm. 
The AM/AMAM/PM method uses a lookup table to specify the amplifier power characteristics. The table returns interpolated or extrapolated values using linear interpolation. Each row in the table expresses the relationship between output power or phase change as a function of input power.
$${u}_{\text{out}}=Tabl{e}_{AM/AM}(u)\times {e}^{((Tabl{e}_{AM/PM}(u)+\angle u)\times i)}$$
where u
_{out} is the output
signal and u is the magnitude of the input signal.
The modified Rapp method is based on normalized transfer functions and uses input and output scaling parameters to adjust the signal levels from their normalized values. The AM/AM characteristics for the modified Rapp method are given by:
$${F}_{AM/AM}(u)=\frac{{g}_{lin}\times \leftu\right}{{(1+\frac{{g}_{lin}\times u}{{V}_{sat}}{}^{2p})}^{\raisebox{1ex}{$1$}\!\left/ \!\raisebox{1ex}{$2p$}\right.}}$$
where u is the magnitude of the input signal, g_{lin}10^{(Linear Gain (dB)/20)} and is computed using Linear power gain (dB), V_{sat} is Output saturation level (V), and p is Magnitude smoothness factor.
The AM/PM characteristics for the modified Rapp method is given by:
$${F}_{AM/PM}(u)=\frac{{\rm A}u{}^{{q}_{1}}}{{[1+(\frac{\leftu\right}{B})]}^{{q}_{2}}}$$
where u is the input signal, A is Phase gain
(rad), B is Phase
saturation, q is Phase
smoothness factor, and angle is a
MATLAB function that returns phase angle of u
.
When Phase Smoothness parameter is a positive scalar value,
q_{1}
=q_{2}
=q
= Phase Smoothness.When Phase Smoothness property is a positive twoelement vector value,
q_{1}
= Phase Smoothness(1) ;q_{2}
= Phase Smoothness(2).
The output signal u_{out} is calculated as:
$${u}_{\text{out}}={F}_{AM/AM}(u)\times {e}^{({F}_{{}_{AM/PM}}(u)\times i)}$$
The Saleh method is based on a normalized transfer function and uses input and output scaling parameters to adjust the signal levels from their normalized values. With the Saleh method,
AM / AM parameters [alpha beta] specifies the alpha_{AM/AM} and beta_{AM/AM} variables that compute the amplitude gain for an input signal using this equation:
$${F}_{AM/AM}(u)=\frac{alph{a}_{AM/AM}\times \leftu\right}{1+bet{a}_{AM/AM}\times u{}^{2}}$$
where u is the magnitude of the scaled signal and
u
is calculated as:$$u=InputScale\times {u}_{\text{in}}$$
AM / PM parameters [alpha beta] specifies the alpha_{AM/PM} and beta_{AM/PM} variables that compute the phase change for an input signal using this equation:
$${F}_{AM/PM}(u)=\frac{alph{a}_{AM/PM}\times u{}^{2}}{1+bet{a}_{AM/PM}\times u{}^{2}}+angle(u)$$
where u is the magnitude of the scaled signal and angle is a MATLAB function that returns the phase angle of u.
The scaled output signal, u_{out} is calculated as:
$${u}_{\text{out}}={F}_{AM/AM}\times {e}^{({F}_{AM/PM}\times i)}\times OutputScale$$
Tips
To visualize the power characteristics of your model, set the parameters listed in the table and click the Plot power characteristics button.
Model Parameters and Example Values Power Characteristics Plot Cubic Polynomial Main tab:
Linear power gain (dB):
7
Type of Nonlinearity:
IIP3
IIP3 (dBm):
33
Simulate using:
Code generation
AM/AM  AM/PM Main tab:
Lookup table (Pin(dBm), Pout(dBm), deg):
[25, 5, 1; 10, 20, 2; 0, 27, 5; 5, 28, 12]
Simulate using:
Code generation
Note
To determine appropriate P_{out} (dBm) and
deg
values for any P_{in} (dBm) values below the value specified in the first row of the Lookup table (Pin(dBm), Pout(dBm), deg) parameter, the block applies the same power gain anddeg
as the first row, to maintain linearity and phase continuity. For any P_{in} (dBm) higher than the value in the last row of the Lookup table (Pin(dBm), Pout(dBm), deg) parameter, the block uses linear extrapolation from last two rows of the Lookup table (Pin(dBm), Pout(dBm), deg).Modified Rapp Main tab:
Linear power gain (dB):
7
Output saturation level (V):
1
Magnitude smoothness factor:
2
Phase gain (rad):
.45
Phase saturation:
0.88
Phase smoothness factor:
3.43
Simulate using:
Code generation
Saleh Main tab:
Input scaling (dB):
0
AM/AM parameters [alpha beta]:
[ 2.1587, 1.1517 ]
AM/PM parameters [alpha beta]:
[ 4.0033, 9.1040 ]
Output scaling (dB):
0
Simulate using:
Interpreted execution
References
[1] Saleh, A.A.M. “FrequencyIndependent and FrequencyDependent Nonlinear Models of TWT Amplifiers.” IEEE^{®} Transactions on Communications 29, no. 11 (November 1981): 1715–20. https://doi.org/10.1109/TCOM.1981.1094911.
[2] Ghorbani, A., and M. Sheikhan. "The Effect of Solid State Power Amplifiers (SSPAs) Nonlinearities on MPSK and MQAM Signal Transmission." In 1991 Sixth International Conference on Digital Processing of Signals in Communications (1991): 193–97.
[3] Rapp, Ch. "Effects of HPANonlinearity on a 4DPSK/OFDMSignal for a Digital Sound Broadcasting System." In Proceedings Second European Conf. on Sat. Comm. (ESA SP332), 179–84. Liege, Belgium, 1991. https://elib.dlr.de/33776/.
[4] Kundert, Ken."Accurate and Rapid Measurement of IP_{2} and IP_{3}," The Designer Guide Community, May 22, 2002.
Extended Capabilities
C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.
Version History
Introduced before R2006aR2024b: Memory Less Nonlinearity Block Updates
The block now permit a 2element phase smoothness factor with independent q_{1} and q_{2} values for the modified Rapp model method, as expressed in this equation.
$${F}_{AM/PM}(u)=\frac{{\rm A}u{}^{{q}_{1}}}{{[1+(\frac{\leftu\right}{B})]}^{{q}_{2}}}$$
The block now permits negative values in the 2element AM / PM conversion parameter for the Saleh model method. This update enables you to express negative phase rotation in the AM / PM impairment.
The values in the Model parameter for Memoryless Nonlinearity block have been renamed:
Parameter  Values before R2024b  Values since R2024b 

Model  Cubic polynomial  cubic 
AM/AM  AM/PM  ampm  
Modified Rapp  modifiedrapp  
Saleh  saleh 
The default value for the Type of Nonlinearity parameter have been changed:
Parameter  Default Values Before R2024b  Default Values Since R2024b 

Type of Nonlinearity  IIP3  OIP3 
R2023a: Modernize memoryless nonlinearity for amplifier modeling
The Memoryless Nonlinearity block updates the methods to apply memoryless nonlinearity impairments when modeling an amplifier.
The block adds an AM/AMAM/PM model that uses a lookup table to define the impairment settings, modifies the parameters to apply the cubic polynomial model, and replaces the Rapp model with the modified Rapp model. For amplifier model method details, see Amplifier Model Methods.
These modeling methods are removed:
Hyperbolic tangent model method
Ghorbani model method
AM/PM conversion settings of the cubic polynomial model method
To review the previous block interface, see (Legacy) Memoryless Nonlinearity reference page.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
 América Latina (Español)
 Canada (English)
 United States (English)
Europe
 Belgium (English)
 Denmark (English)
 Deutschland (Deutsch)
 España (Español)
 Finland (English)
 France (Français)
 Ireland (English)
 Italia (Italiano)
 Luxembourg (English)
 Netherlands (English)
 Norway (English)
 Österreich (Deutsch)
 Portugal (English)
 Sweden (English)
 Switzerland
 United Kingdom (English)