Main Content

dpdPreprocessor

Digital predistortion (DPD) data input preprocessor for AI algorithms

Since R2024b

Description

The dpdPreprocessor System object™ configures a DPD input data preprocessor object to generate an augmented input for AI-based DPDs and power amplifiers (PAs). For more information, see Algorithms.

To configure a DPD input data preprocessor for AI algorithms:

  1. Create the dpdPreprocessor object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects?

Creation

Description

dpdIn = dpdPreprocessor returns a DPD input data preprocessor object to generate an augmented input for AI-based DPDs and PAs.

dpdIn = dpdPreprocessor(M,K) returns a DPD input data preprocessor object with the MemoryDepth property set to M and the Degree property set to K.

example

dpdIn = dpdPreprocessor(Name=Value) creates a DPD preprocessor object with the specified property Name set to the specified Value. For example, dpdPreprocessor(Degree=2) specifies a DPD preprocessor object with the DPD nonlinearity degree set to 2. You can specify additional name-value arguments in any order as (Name1,Value1,...,NameN,ValueN).

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects.

Memory depth of DPD, M, specified as a positive integer.

Nonlinearity degree of DPD, K, specified as a positive integer or row vector.

  • If you set this property to 1, the magnitude based outputs are omitted.

  • If you set this property to a row vector, only the specified powers of the input magnitudes are used.

Usage

Description

Xaug = dpdIn(X) returns an augmented input matrix for the input, X.

example

Input Arguments

expand all

IQ samples, specified as a column vector. For more information, see Algorithms.

Data Types: single | double
Complex Number Support: Yes

Output Arguments

expand all

Augmented input matrix for the input, X, returned in a matrix with the same data type as the input. Each row of Xaug contains the features for the corresponding row of X as represented by the time-delayed IQ sample, the current IQ sample, and the amplitudes of the sample. For more information, see Algorithms.

Data Types: single | double

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

infoCharacteristic information about DPD input data preprocessor
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

collapse all

Configure a dpdPreprocessor object with the PA memory depth set to 4 and the PA nonlinearity degree set to 3.

paMemDepth = 4;
paNonlinDeg = 3;
paPreprocessor = dpdPreprocessor(paMemDepth,paNonlinDeg);

Generate random QAM-modulated symbols, apply DPD preprocessing, and show the size of the augmented DPD preprocessor input returned.

M = 16; % 16-QAM
x = randi([0 M-1],10e3,1);
qamRefSym = single(qammod(x,M));
paScalingFactor = 40;
paInputFeatures = paPreprocessor(qamRefSym*paScalingFactor);
size(paInputFeatures)
ans = 1×2

       10000          16

Show the characteristic information of the DPD preprocessor object.

info(paPreprocessor)
ans = struct with fields:
    NumFeatures: 16

Algorithms

As described in [1], this object implements a data augmenter for use by AI-based DPD and PA models such as the augmented real-valued time-delay neural network (ARVTDNN).

The augmented input consists of Cartesian in-phase and quadrature phase (IQ) components, as well as envelope-dependent terms. For IQ samples (time-delayed samples and current sample I[n], Q[n]) and the amplitudes of the sample |X[n]|, |X[n]|2, ..., |X[n]|(K – 1), the augmented input is a concatenation of these terms:

  • I[n – M + 1], I[n – M+2], ..., I[n]

  • Q[n – M + 1], Q[n – M+3], ..., Q[n]

  • |X[n – M+1]|, |X[n – M+2]|, ..., |X[n]|

  • ...

  • |X[n – M+1]|(K – 1), |X[n – M+2]|(K – 1), ..., |X[n]|(K – 1)

    • If X is a column vector of size N-by-1, then the output, Y, is a matrix with size N-by-P, where P is the number of input features.

    • If K and M are scalars, then P = M×(2 + (K - 1)).

    • If K is a vector, then P = M×(2 + length(K)).

Where:

  • N is the number of rows in input X.

  • P is the number of features. The info object function returns characteristic information in a structure that indicates the number of features.

  • K is the value of the Degree property.

  • M is the value of the MemoryDepth property.

References

[1] D. Wang, M. Aziz, M. Helaoui, and F. M. Ghannouchi, "Augmented Real-Valued Time-Delay Neural Network for Compensation of Distortions and Impairments in Wireless Transmitters," IEEE Transactions on Neural Networks and Learning Systems 30, no. 1 (January 2019): pp. 242–54. https://doi.org/10.1109/TNNLS.2018.2838039.

Extended Capabilities

Version History

Introduced in R2024b