Model power amplifier with memory
RF Blockset / Circuit Envelope / Elements
The Power Amplifier block models two-port power amplifiers. A memory polynomial expression derived from the Volterra series models the nonlinear relationship between input and output signals. This power amplifier includes memory effects because the output response depends on the current input signal and the input signal at previous times. These power amplifiers are useful when transmitting wideband or narrowband signals.
Model
— Model typeMemory polynomial
(default) | Generalized Hammerstein
| Cross-Term Memory
| Cross-Term Hammerstein
Model type, specified as Memory polynomial
,
Generalized Hammerstein
,
Cross-Term Memory
, or Cross-Term
Hammerstein
. The following table summarizes the
characteristics of the different models:
Model | Characterization Data | Type of Coefficients | In-Band Spectral Regrowth | Out-of-Band Harmonic Generation |
---|---|---|---|---|
Memory polynomial
(default) | Bandpass (I,Q) | Complex | Yes | No |
Generalized
Hammerstein | True passband | Real | Yes | Yes |
Cross-Term Memory | Bandpass (I,Q) | Complex | Yes | No |
Cross-Term
Hammerstein | True passband | Real | Yes | Yes |
Memory polynomial
– This narrowband
memory polynomial implementation (equation (19) of [1]) operates on the envelope of the input signal, does not
generate new frequency components, and captures in-band spectral
regrowth. Use this model to create a narrowband amplifier
operating at high frequency.
The output signal, at any instant of time, is the sum of all the elements of the following complex matrix of dimensions :
In the matrix, the number of rows equals the number of memory terms, and the number of columns equals the degree of the nonlinearity. The signal subscript represents amount of delay.
Generalized Hammerstein
– This
wideband memory polynomial implementation (equation (18) of
[1]) operates on the envelope of the input signal, generates
frequency components that are integral multiples of carrier
frequencies, and captures in-band spectral regrowth. Increasing
the degree of the nonlinearity increases the number of
out-of-band frequencies generated. Use this model to create
wideband amplifiers operating at low frequency.
The output signal, at any instant of time, is the sum of all the elements of the following real matrix of dimensions :
In the matrix, the number of rows equals the number of memory terms, and the number of columns equals the degree of the nonlinearity. The signal subscript represents amount of delay.
Cross-Term Memory
– This narrowband
memory polynomial implementation (equation (23) of [1]) operates on the envelope of the input signal, does not
generate new frequency components, and captures in-band spectral
regrowth. Use this model to create a narrowband amplifier
operating at high frequency. The model includes leading and
lagging memory terms and provides a generalized implementation
of the memory polynomial model.
The output signal, at any instant of time, is the sum of all the elements of a matrix specified by the element-by-element product
C .* MCTM,
where C is a complex coefficient matrix of dimensions and
In the matrix, the number of rows equals the number of memory
terms, and the number of columns is proportional to the degree
of the nonlinearity and the number of memory terms. The signal
subscript represents amount of delay. The additional columns
that do not appear in the Memory
polynomial
model represent the cross terms.
Cross-Term Hammerstein
– This
wideband memory polynomial implementation operates on the
envelope of the input signal, generates frequency components
that are integral multiples of carrier frequencies, and captures
in-band spectral regrowth. Increasing the order of the
nonlinearity increases the number of out-of-band frequencies
generated. Use this model to create wideband amplifiers
operating at low frequency.
The output signal, at any instant of time, is the sum of all the elements of a matrix specified by the element-by-element product
C .* MCTH,
where C is a complex coefficient matrix of dimensions and
In the matrix, the number of rows equals the number of memory
terms, and the number of columns is proportional to the degree
of the nonlinearity and the number of memory terms. The signal
subscript represents amount of delay. The additional columns
that do not appear in the Generalized
Hammerstein
model represent the cross
terms.
Coefficient Matrix
— Coefficient matrixCoefficient matrix, specified as a complex matrix for the
Memory polynomial
and Cross-Term
Memory
models and as a real matrix for the
Generalized Hammerstein
and
Cross-Term Hammerstein
models.
For the Memory polynomial
and
Cross-Term Memory
models, you can
identify the complex coefficient matrix based on the measured
complex (I,Q) output-vs.-input amplifier characteristic. As an
example, see the helper function in Coefficient Matrix Computation.
For the Generalized Hammerstein
and
Cross-Term Hammerstein
models,
you can identify the real coefficient matrix based on the
measured real passband output-vs.-input amplifier
characteristic.
The size of the matrix depends on the number of delays and the degree of the system nonlinearity.
For the Memory polynomial
and
Generalized Hammerstein
models,
the matrix has dimensions .
For the Cross-Term Memory
and
Cross-Term Hammerstein
models,
the matrix has dimensions .
Coefficient Sample Time (s)
— Sample interval of input-output data1e-6
(default) | real positive scalarSample interval of input-output data used to identify the coefficient matrix, specified as a real positive scalar.
The accuracy of the model can be affected if the coefficient sample time differs from the simulation step size specified in the Configuration block. For best results, use a coefficient sample time at least as large as the simulation step size.
Rin (ohm)
— Input resistance50
(default) | real positive scalarInput resistance, specified as a real positive scalar.
Rout (ohm)
— Output resistance50
(default) | real positive scalarOutput resistance, specified as a real positive scalar.
Ground and hide negative terminals
— Ground RF circuit terminalsSelect this parameter to ground and hide the negative terminals. Clear the parameter to expose the negative terminals. By exposing these terminals, you can connect them to other parts of your model.
To compute coefficient matrices, the block solves an overdetermined linear system
of equations. Consider the Memory polynomial
model for
the case where the memory length is 2 and the system nonlinearity is of third
degree. The matrix that describes the system is
and the sum of its elements is equivalent to the inner product
If the input to the amplifier is the five-sample signal [x(1) x(2) x(3) x(4) x(5)] and the corresponding output is [y(1) y(2) y(3) y(4) y(5)], then the solution to
which can be found using the MATLAB® backslash operator, provides an estimate of the coefficient matrix.
The treatment of the Cross-Term Memory
model is
similar. The matrix that describes the system is
and the sum of its elements is equivalent to the inner product
If the input to the amplifier is the five-sample signal [x(1) x(2) x(3) x(4) x(5)] and the corresponding output is [y(1) y(2) y(3) y(4) y(5)], then the solution to
provides an estimate of the coefficient matrix.
Use this helper function to compute coefficient matrices for the
Memory polynomial
and Cross-Term
Memory
models. The inputs to the function are the given input and
output signals, the memory length, the degree of nonlinearity, and the absence or
presence of cross terms.
function a_coef = fit_memory_poly_model(x,y,memLen,degLen,modType) % FIT_MEMORY_POLY_MODEL % Procedure to compute a coefficient matrix given input and output % signals, memory length, nonlinearity degree, and model type. % % Copyright 2017 MathWorks, Inc. x = x(:); y = y(:); xLen = length(x); switch modType case 'memPoly' % Memory polynomial xrow = reshape((memLen:-1:1)' + (0:xLen:xLen*(degLen-1)),1,[]); xVec = (0:xLen-memLen)' + xrow; xPow = x.*(abs(x).^(0:degLen-1)); xVec = xPow(xVec); case 'ctMemPoly' % Cross-term memory polynomial absPow = (abs(x).^(1:degLen-1)); partTop1 = reshape((memLen:-1:1)'+(0:xLen:xLen*(degLen-2)),1,[]); topPlane = reshape( ... [ones(xLen-memLen+1,1),absPow((0:xLen-memLen)' + partTop1)].', ... 1,memLen*(degLen-1)+1,xLen-memLen+1); sidePlane = reshape(x((0:xLen-memLen)' + (memLen:-1:1)).', ... memLen,1,xLen-memLen+1); cube = sidePlane.*topPlane; xVec = reshape(cube,memLen*(memLen*(degLen-1)+1),xLen-memLen+1).'; end coef = xVec\y(memLen:xLen); a_coef = reshape(coef,memLen,numel(coef)/memLen);
[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, No. 10, October 2006, pp. 3852–3860.
[2] Gan, Li, and Emad Abd-Elrady. "Digital Predistortion of Memory Polynomial Systems using Direct and Indirect Learning Architectures." In Proceedings of the Eleventh IASTED International Conference on Signal and Image Processing (SIP) (F. Cruz-Roldán and N. B. Smith, eds.), No. 654-802. Calgary, AB: ACTA Press, 2009.