Estimate memory-polynomial coefficients for digital predistortion
Communications Toolbox / RF Impairments Correction
Estimate memory-polynomial coefficients for digital predistortion (DPD) of a nonlinear power amplifier.
This icon shows the block with all ports enabled.
PA In
— Power amplifier baseband-equivalent inputPower amplifier baseband-equivalent input, specified as a column vector.
Data Types: double
Complex Number Support: Yes
PA Out
— Power amplifier baseband-equivalent outputPower amplifier baseband-equivalent output, specified as a column vector of the same length as PA In.
Data Types: double
Complex Number Support: Yes
Forgetting Factor
— Forgetting factorForgetting factor used by the recursive least squares algorithm, specified as a scalar in the range (0, 1]. Decreasing the forgetting factor reduces the convergence time but causes the output estimates to be less stable.
To enable this port, set Algorithm to Recursive
least squares
and set Forgetting factor source to
Input port
.
Data Types: double
Out
— Memory-polynomial coefficientsMemory-polynomial coefficients, returned as a matrix. For more information, see Digital Predistortion.
Desired amplitude gain (dB)
— Desired amplitude gain10
(default) | scalarDesired amplitude gain in dB, specified as a scalar. This parameter value expresses the desired signal gain at the compensated amplifier output.
Tunable: Yes
Data Types: double
Polynomial type
— Polynomial typeMemory polynomial
(default) | Cross-term memory polynomial
Polynomial type used for predistortion, specified as one of these values:
Memory polynomial
— Computes predistortion coefficients by
using a memory polynomial without cross terms
Cross-term memory polynomial
— Computes predistortion
coefficients by using a memory polynomial with cross terms
For more information, see Digital Predistortion.
Degree
— Memory-polynomial degree5
(default) | positive integerMemory-polynomial degree, specified as a positive integer.
Data Types: double
Memory depth
— Memory-polynomial depth3
(default) | positive integerMemory-polynomial depth in samples, specified as a positive integer.
Data Types: double
Algorithm
— Estimation algorithmLeast squares
(default) | Recursive least squares
Adaptive algorithm used for equalization, specified as one of these values:
Least squares
— Estimate the memory-polynomial coefficients
by using a least squares algorithm
Recursive least squares
— Estimate the memory-polynomial
coefficients by using a recursive least squares algorithm
For algorithm reference material, see the works listed in [1] and [2].
Data Types: char
| string
Forgetting factor source
— Source of forgetting factorProperty
(default) | Input port
Source of the forgetting factor, specified as one of these values:
Property
— Specify this value to use the
Forgetting factor parameter to specify the forgetting
factor.
Input port
— Specify this value to use the
Forgetting Factor input port to specify the forgetting
factor.
To enable this parameter, set Algorithm to Recursive
least squares
.
Data Types: double
Forgetting factor
— Forgetting factor0.99
(default) | scalar in the range (0, 1]Forgetting factor used by the recursive least squares algorithm, specified as a scalar in the range (0, 1]. Decreasing the forgetting factor reduces the convergence time but causes the output estimates to be less stable.
To enable this parameter, set Algorithm to Recursive
least squares
and set Forgetting factor source to
Property
.
Data Types: double
Initial coefficient estimate
— Initial coefficient estimate[]
(default) | matrixInitial coefficient estimate for the recursive least squares algorithm, specified as a matrix.
If you specify this value as an empty matrix, the initial coefficient estimate for the recursive least squares algorithm is chosen automatically to correspond to a memory polynomial that is an identity function, so that the output is equal to input.
If you specify this value as a nonempty matrix, the number of rows must be equal to the Memory depth parameter value.
If the Polynomial type parameter is set to
Memory polynomial
, the number of columns is the degree
of the memory polynomial.
If the Polynomial type parameter is set to
Cross-term memory polynomial
, the number of columns
must equal m(n-1)+1. m is the memory depth of the
polynomial, and n is the degree of the memory
polynomial.
For more information, see Digital Predistortion.
To enable this parameter, set Algorithm to Recursive
least squares
.
Data Types: double
Complex Number Support: Yes
Simulate using
— Type of simulation to runCode 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 C code is reused for
subsequent simulations unless the model changes. This option requires
additional startup time, but the speed of the subsequent simulations is
faster than Interpreted execution
.
Interpreted execution
–– Simulate the model by
using the MATLAB® interpreter. This option requires less startup time than the
Code generation
method, but the speed of
subsequent simulations is slower. In this mode, you can debug the source
code of the block.
Data Types |
|
Multidimensional Signals |
|
Variable-Size Signals |
|
Wireless communication transmissions commonly require wide bandwidth signal transmission over a wide signal dynamic range. To transmit signals over a wide dynamic range and achieve high efficiency, RF power amplifiers (PAs) commonly operate in their nonlinear region. As this constellation diagram shows, the nonlinear behavior of a PA causes signal constellation distortions that pinch the amplitude (AM-AM distortion) and twist phase (AM-PM distortion) of constellation points proportional to the amplitude of the constellation point.
The goal of digital predistortion is to find a nonlinear function that linearizes the net effect of the PA nonlinear behavior at the PA output across the PA operating range. When the PA input is x(n), and the predistortion function is f(u(n)), where u(n) is the true signal to be amplified, the PA output is approximately equal to G×u(n), where G is the desired amplitude gain of the PA.
The digital predistorter can be configured to use a memory polynomial with or without cross terms.
The memory polynomial with cross terms predistorts the input signal as
The memory polynomial with cross terms has (M+M×M×(K-1)) coefficients for cm and amjk.
The memory polynomial without cross terms predistorts the input signal as
The polynomial without cross terms has M×K coefficients for amk.
Estimating Predistortion Function and Coefficients
The DPD coefficient estimation uses an indirect learning architecture to find function f(u(n)) to predistort input signal u(n) which precedes the PA input.
The DPD coefficient estimation algorithm models nonlinear PA memory effects based on the work in reference papers by Morgan, et al [1], and by Schetzen [2], using the theoretical foundation developed for Volterra systems.
Specifically, the inverse mapping from the PA output normalized by the PA gain, {y(n)/G}, to the PA input, {x(n)}, provides a good approximation to the function f(u(n)), needed to predistort {u(n)} to produce {x(n)}.
Referring to the memory polynomial equations above, estimates are computed for the memory-polynomial coefficients:
cm and amjk for a memory polynomial with cross terms
amk for a memory polynomial without cross terms
The memory-polynomial coefficients are estimated by using a least squares fit algorithm or a recursive least squares algorithm. The least squares fit algorithm or a recursive least squares algorithms use the memory polynomial equations above for a memory polynomial with or without cross terms, by replacing {u(n)} with {y(n)/G}. The function order and dimension of the coefficient matrix are defined by the degree and depth of the memory polynomial.
For an example that details the process of accurately estimating memory-polynomial coefficients and predistorting a PA input signal, see Digital Predistortion to Compensate for Power Amplifier Nonlinearities.
For background reference material, see the works listed in [1] and [2].
[1] Morgan, Dennis R., Zhengxiang Ma, Jaehyeong Kim, Michael G. Zierdt, and John Pastalan. "A Generalized Memory Polynomial Model for Digital Predistortion of Power Amplifiers." IEEE® Transactions on Signal Processing. Vol. 54, Number 10, October 2006, pp. 3852–3860.
[2] M. Schetzen. The Volterra and Wiener Theories of Nonlinear Systems. New York: Wiley, 1980.