主要内容

comm.DPD

数字预失真

描述

comm.DPD系统对象™将数字预失真(DPD)应用于复杂基带信号,通过使用内存多项式来补偿功率放大器中的非线性。有关更多信息,请参见数字预失真

要预先扭曲信号:

  1. 创建comm.DPD对象并设置其属性。

  2. 使用参数调用对象,就像调用函数一样。

有关系统对象如何工作的详细信息,请参见什么是系统对象?

创建

描述

dpd= comm.DPD创建一个数字预失真系统对象来预失真信号。

例子

dpd= comm.DPD (的名字价值使用一个或多个名称-值对设置属性。例如,dpd('多项式类型','交叉项记忆多项式')配置预失真器系统对象,通过使用具有交叉项的存储多项式来预失真输入信号。将每个属性名用引号括起来。

属性

全部展开

除非另有说明,属性为nontunable,这意味着在调用对象后不能更改它们的值。对象在调用时锁定,而释放功能解锁它们。

如果属性为可调,您可以随时更改其值。

有关更改属性值的详细信息,请参见使用系统对象的MATLAB系统设计

用于预失真的多项式类型,指定为以下值之一:

  • 记忆多项式的-通过使用无交叉项的记忆多项式来预失真输入信号。

  • “交叉项记忆多项式”-通过使用带有交叉项的记忆多项式来预失真输入信号。

有关更多信息,请参见数字预失真

记忆多项式系数,用矩阵表示。矩阵中的行数必须等于存储多项式的存储深度。

  • 如果PolynomialType记忆多项式的,矩阵中的列数为存储多项式的次。

  • 如果PolynomialType“交叉项记忆多项式”,则矩阵中的列数必须等于n1) + 1是多项式的记忆深度,和n是记忆多项式的次。

有关更多信息,请参见数字预失真

数据类型:
复数支持:金宝app是的

使用

语法

描述

例子

= dpd (利用记忆多项式来补偿功率放大器中的非线性,从而预失真复杂基带信号。

输入参数

全部展开

输入基带信号,指定为列向量。

数据类型:
复数支持:金宝app是的

输出参数

全部展开

预失真基带信号,作为与输入信号长度相同的列向量返回。

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放system对象的系统资源obj,使用这种语法:

发行版(obj)

全部展开

一步 运行系统对象算法
释放 释放资源并允许更改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

将数字预失真(DPD)应用于功率放大器的输入信号。DPD系数估计器系统对象使用包含功率放大器输入和输出信号的捕获信号来确定预失真系数矩阵。

加载一个包含功率放大器输入和输出信号的文件。

负载(“commpowamp_dpd_data.mat”“PA_input”“PA_output”

生成一个DPD系数估计器系统对象和一个凸起的余弦发射滤波器系统对象。

估计器= com . dpd...“DesiredAmplitudeGaindB”10...“PolynomialType”记忆多项式的...“度”5,“MemoryDepth”3,“算法”“最小二乘法”);rctFilt = com . raisedcosinetransmitfilter (“OutputSamplesPerSymbol”2);

估计数字预失真记忆多项式系数。

coef = estimator(PA_input,PA_output);

使用生成DPD系统对象系数,由DPD系数估计器输出的估计系数,与系数矩阵相同。

dpd = com . dpd (“PolynomialType”记忆多项式的...“系数”系数);

生成2000个随机符号,并对信号应用16-QAM调制。对调制信号进行提升余弦发射滤波。

S = randi([0,15],2000,1);U = qammod(s,16);x = rctFilt(u);

对数据进行数字预失真处理。DPD System对象返回一个预失真信号,作为功率放大器的输入。

Y = dpd(x);

这个例子展示了DPD记忆多项式的系数矩阵的格式,通过使用一个随机生成的系数矩阵。示例中的步骤包括:

  • 创建使用存储深度设置为的存储多项式系数矩阵配置的数字预失真器系统对象3.这个多项式的次集是5由随机值组成的。

  • 使用记忆多项式系数矩阵预失真信号。

  • 一个预扭曲的输出元素与使用内存多项式系数矩阵手动计算的相应输入元素的比较。

创建一个系数矩阵,表示输出等于输入的预失真器,方法是生成一个3 × 5的零系数矩阵并设置系数(1,1)元素1.在系数矩阵中加入小的随机复杂非线性项。

Coef = 0 (3,5);Coef (1,1) = 1;Coef = Coef + 0.01*(randn(3,5)+1j*randn(3,5));

使用内存多项式系数矩阵创建DPD系统对象,系数

dpd = com . dpd (...“PolynomialType”记忆多项式的...“系数”系数);

生成输入信号并使用dpd系统对象。

X = randn(20,1) + 1j*randn(20,1);Y = dpd(x);

比较输入对应输出元素的手动扭曲输出y (18)以显示如何使用系数矩阵来计算特定的输出值。

U = x(18:-1:(18-3+1));isequal (y(18)和(和(系数。*...[u u。* abs (u)。* (abs (u)。^ 2)。* (abs (u)。^ 3)。* (abs (u)。^ 4)))))
ans =逻辑1

这个例子展示了DPD记忆多项式的系数矩阵的格式,通过使用一个随机生成的系数矩阵。示例中的步骤包括:

  • 创建使用交叉项存储多项式系数矩阵配置的数字预失真器系统对象,其存储深度设置为3.这个多项式的次集是5由随机值组成的。

  • 使用交叉项记忆多项式系数矩阵预失真信号。

  • 一个预失真输出元素与已使用交叉项记忆多项式系数矩阵手动计算的相应输入元素的比较。

创建一个系数矩阵,表示输出等于输入的预失真器,方法是生成一个3 × 5的零系数矩阵并设置系数(1,1)元素1.在系数矩阵中加入小的随机复杂非线性项。

Coef = 0 (3,3*(5-1)+1);Coef (1,1) = 1;系数=系数+ 0.01 * (randn (13) + 1 j * randn (13));

使用交叉项记忆多项式系数矩阵创建DPD系统对象,系数

dpd = com . dpd (...“PolynomialType”“交叉项记忆多项式”...“系数”系数);

生成输入信号并使用dpd系统对象。

X = randn(20,1) + 1j*randn(20,1);Y = dpd(x);

比较输入对应输出元素的手动扭曲输出y (18)以显示如何使用系数矩阵来计算特定的输出值。

U = x(18:-1:(18-3+1));isequal (y(18)和(和(系数。*...[u u * abs (u。)* (abs (u)。^ 2)u * (abs (u)。^ 3)u * (abs (u)。^ 4)))))
ans =逻辑1

更多关于

全部展开

参考文献

[1] Morgan, Dennis R, Ma Zhengxiang, Jaehyeong Kim, Michael G. Zierdt和John Pastalan。功率放大器数字预失真的广义记忆多项式模型。IEEE®信号处理汇刊.第54卷,第10期,2006年10月,3852-3860页。

M. Schetzen。非线性系统的沃尔泰拉和维纳理论。纽约:Wiley出版社,1980年。

扩展功能

版本历史

在R2019a中引入