File Exchange

image thumbnail

Adaptive DPD Design

version (7.48 MB) by Kerry Schutz
A workflow for modeling and simulating PAs and adaptive DPDs.


Updated 01 Aug 2014

View License

See the README.PDF for an explanation of the contents of this zip file and how to use the models. See DPD.PDF for general background on PA and DPD modeling.
Digital pre-distortion (DPD) is a baseband signal processing technique that corrects for impairments inherent to RF power amplifiers (PAs). These impairments cause out-of-band emissions or spectral regrowth and in-band distortion which correlates with an increased bit-error-rate (BER). Wideband signals with a high peak-to-average ratio, as is characteristic of LTE/4G transmitters, are particulary susceptible to these unwanted effects.
In this paper, we illustrate a workflow for modeling and simulating PAs and DPDs. The models shown in this article are based on two technical papers, [1] and [2]. We start from PA measurements. From measurements, we derive a static DPD design based on a memory polynomial. Such a polynomial corrects for both the non-linearities and memory effects in the PA. For simulation purposes, we construct a system-level model to evaluate the DPD’s effectiveness. Because any PAs characteristics will vary over time and operating conditions, we extend the static DPD design to an adaptive one. We evaluate two adaptive DPD designs, one based on the (Least-Mean Square) LMS algorithm and a second using the Recurive Predictor Error Method (RPEM) algorithm.

Comments and Ratings (13)

senh sali

i want to aplay your code for a OFDM signal how i can do it ?

Hi are you sure that the fit_memory_poly_model works correctly?It seems that referring to past values is not there. for example:
if you analyze x_terms in the scripts for M=2 lets say:
for K=1,M=0:
x_terms(1,1:2)=X(1:2)abs(X(1:2)).^K-1 . Here X(1) is the current input and X(2) should be the previous input according to the mattrix formation in DPD.pdf. However, looking at DPD_analysis.m X(2) corresponds to up(2) which is the next input to the mattrix. Any explanation on this would be much appreciated


HI Bilal Khan
I'm using this DPD document for real PA,but the ACPR of (before DPD) is better than (After DPD).maybe we could have a talk and fix this problem?
my mail ID:

Bilal Khan


I hope someone still visit here and help me out with a problem. I am using polynomial model for estimating DPD coefficients based on LS solution. The problem is my memoryless model works better than memory polynomial model for DPD (in terms of ACPR reduction not EVM). I dont understnad this. WIth memory polynomial model i get a little extra power in one adjacent channel and the spectrum is unsymmetrical i couldnt understand it why? I have tried the functions provided in this file aswell but the same problem i am getting.
Does anyone ever encounter such problme or if someone can help me out that would be great. Btw i am doing measurement with real PA not simulink model. I am using ARB, PSG UXA in my loop.


yawen (view profile)

very useful for beginners.thks!

Zhe Wu

Zhe Wu (view profile)

can any one help me for creating VHLD code for this model or any one testing this model in any FPGA and please share that code
thank u
my mail id -


Claire (view profile)

John Reyland

Very helpful for someone trying to learn this predistortion game

bin jia

David Chang

the simulated am/am curve lies in the linear range of the Seleh model; and on increasing the slide gain to about 0.8 (for RPEM) the feedback fails...


looks like a function called "fit_memory_poly_model" got missing.


JUN (view profile)


2014.07.31 - Added rpem_dpd_coef.mat which was missing. This impacted dpd_adapt_verify.slx.

2014.07.26 - Added fit_memory_poly_model.m as it was missing from the original submission. Thank you Raymond Wu for pointing this out.

MATLAB Release Compatibility
Created with R2013b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.

Learn About Live Editor