主要内容gydF4y2Ba

comm.IQImbalanceCompensatorgydF4y2Ba

补偿I/Q不平衡gydF4y2Ba

描述gydF4y2Ba

的gydF4y2BaIQImbalanceCompensatorgydF4y2Ba系统对象™补偿调制信号的同相分量和正交分量之间的不平衡。gydF4y2Ba

为了弥补I/Q不平衡:gydF4y2Ba

  1. 定义和设置gydF4y2BaIQImbalanceCompensatorgydF4y2Ba对象。看到gydF4y2Ba建设gydF4y2Ba.gydF4y2Ba

  2. 调用gydF4y2Ba一步gydF4y2Ba的特性来补偿I/Q不平衡gydF4y2Bacomm.IQImbalanceCompensatorgydF4y2Ba.的行为gydF4y2Ba一步gydF4y2Ba特定于工具箱中的每个对象。gydF4y2Ba

I/Q不平衡补偿器固有的自适应算法与M-PSK, M-QAM和OFDM调制方案兼容,其中gydF4y2BaM > 2gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

补偿器的输出可以缩放和旋转,也就是说,相对于参考星座乘以一个复数。在实践中,这不是一个问题,因为接收机在使用信道估计解调之前纠正了这个问题。gydF4y2Ba

请注意gydF4y2Ba

从R2016b开始,而不是使用gydF4y2Ba一步gydF4y2Ba方法来执行System对象™定义的操作,则可以使用参数调用该对象,就像调用函数一样。例如,gydF4y2BaY = step(obj,x)gydF4y2Ba而且gydF4y2BaY = obj(x)gydF4y2Ba请执行相同的操作。gydF4y2Ba

建设gydF4y2Ba

H = com . iqimbalanccompenssatorgydF4y2Ba创建一个补偿器系统对象,gydF4y2BaHgydF4y2Ba,它补偿了输入信号的同相分量和正交分量之间的不平衡。gydF4y2Ba

H = com . iqimbalancecompensator (gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba创建一个I/Q失衡补偿器对象,gydF4y2BaHgydF4y2Ba,每个指定的属性gydF4y2Ba的名字gydF4y2Ba设置为指定的gydF4y2Ba价值gydF4y2Ba.您可以以任意顺序指定额外的名-值对参数,如(gydF4y2BaName1gydF4y2Ba,gydF4y2BaValue1gydF4y2Ba、……gydF4y2Ba以gydF4y2Ba,gydF4y2Ba家gydF4y2Ba).gydF4y2Ba

属性gydF4y2Ba

CoefficientSourcegydF4y2Ba

补偿器系数的来源gydF4y2Ba

指定或gydF4y2Ba从输入信号估计gydF4y2Ba或gydF4y2Ba输入端口gydF4y2Ba.如果gydF4y2BaCoefficientSourcegydF4y2Ba属性设置为gydF4y2Ba从输入信号估计gydF4y2Ba,补偿器使用自适应算法从输入信号估计补偿器系数。如果gydF4y2BaCoefficientSourcegydF4y2Ba属性设置为gydF4y2Ba输入端口gydF4y2Ba时,所有其他属性都被禁用,并且补偿器系数必须提供给gydF4y2Ba一步gydF4y2Ba函数作为输入参数。默认值为gydF4y2Ba从输入信号估计gydF4y2Ba.此属性不可调。gydF4y2Ba

InitialCoefficentgydF4y2Ba

用于补偿I/Q不平衡的初始系数gydF4y2Ba

初始系数是一个复标量,可以是单精度或双精度。默认值为gydF4y2Ba0 + 0我gydF4y2Ba.此属性不可调。gydF4y2Ba

StepSizeSourcegydF4y2Ba

系数自适应步长来源gydF4y2Ba

指定或gydF4y2Ba财产gydF4y2Ba或gydF4y2Ba输入端口gydF4y2Ba.如果gydF4y2BaStepSizeSourcegydF4y2Ba设置为gydF4y2Ba财产gydF4y2Ba方法指定步长gydF4y2BaStepSizegydF4y2Ba财产。否则,步长将提供给gydF4y2Ba一步gydF4y2Ba函数作为输入参数。默认值为gydF4y2Ba财产gydF4y2Ba.此属性不可调。gydF4y2Ba

StepSizegydF4y2Ba

自适应步长gydF4y2Ba

指定算法在估计I/Q不平衡时使用的步长。此属性仅当gydF4y2BaStepSizeSourcegydF4y2Ba设置为gydF4y2Ba财产gydF4y2Ba.默认值为gydF4y2Ba1 e-5gydF4y2Ba.此属性是可调的。gydF4y2Ba

AdaptInputPortgydF4y2Ba

创建输入端口以控制补偿器系数自适应gydF4y2Ba

当此逻辑属性为gydF4y2Ba真正的gydF4y2Ba,创建一个输入端口来启用或禁用系数自适应。如果gydF4y2BaAdaptInputPortgydF4y2Ba是gydF4y2Ba假gydF4y2Ba,每次输出样本后系数更新。默认值为gydF4y2Ba假gydF4y2Ba.此属性不可调。gydF4y2Ba

CoefficientOutputPortgydF4y2Ba

创建输出补偿器系数的端口gydF4y2Ba

当此逻辑属性为gydF4y2Ba真正的gydF4y2Ba的输出参数使I/Q不平衡补偿器系数可用gydF4y2Ba一步gydF4y2Ba函数。默认值为gydF4y2Ba假gydF4y2Ba.此属性不可调。gydF4y2Ba

方法gydF4y2Ba

一步gydF4y2Ba 补偿I/Q不平衡gydF4y2Ba
所有系统对象通用gydF4y2Ba
释放gydF4y2Ba

允许系统对象属性值更改gydF4y2Ba

重置gydF4y2Ba

重置System对象的内部状态gydF4y2Ba

当使用gydF4y2Ba重置gydF4y2Ba,此方法从先前处理的帧中的最后一个符号重置加窗后缀。gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

在QPSK调制信号中,通过使用gydF4y2Bacomm.IQImbalanceCompensatorgydF4y2Ba系统对象。gydF4y2Ba

生成随机数据符号并应用QPSK调制。gydF4y2Ba

M = 4;gydF4y2Ba%正交相移编码gydF4y2BaSPF = 1e6;gydF4y2Ba每帧样本百分比gydF4y2Badata = randi([0 M-1],spf,1);txSig = pskmod(data,M,pi/4);gydF4y2Ba

创建一个星座图对象来显示IQ失衡补偿前后的QPSK信号。对象的参考星座不需要更新,因为默认的QPSK参考星座与传输的信号匹配。gydF4y2Ba

constDiagram = com . constellationdiagram (gydF4y2Ba...gydF4y2BaNumInputPorts = 2,gydF4y2Ba...gydF4y2BaShowLegend = true,gydF4y2Ba...gydF4y2BaChannelNames = {gydF4y2Ba“信号受损”gydF4y2Ba,gydF4y2Ba“智商失衡得到补偿”gydF4y2Ba});gydF4y2Ba

创建一个I/Q不平衡补偿器。gydF4y2Ba

iqImbComp = com . iqimbalanccompensator;gydF4y2Ba

将振幅和相位不平衡应用于传输信号。gydF4y2Ba

ampImb = 5;gydF4y2Ba% dBgydF4y2BaphImb = 15;gydF4y2Ba%度gydF4y2BagainI = 10.^(0.5*ampImb/20);gainQ = 10.^(-0.5*ampImb/20);imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180);imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180));rxSig = imbI + imbQ;gydF4y2Ba

在接收端,对受损信号采用I/Q补偿算法。gydF4y2Ba

compSig = iqImbComp(rxSig);gydF4y2Ba

将信号的最后1000个符号加载到星座图对象中,显示受损信号和IQ受损补偿信号。受损信号星座显示智商振幅和相位受损。损伤补偿后的信号星座几乎与参考星座对齐。gydF4y2Ba

constDiagram(rxSig(spf - 1000:结束),compSig(spf - 1000:结束))gydF4y2Ba

补偿幅值和相位不平衡的8-PSK信号使用gydF4y2Bacomm.IQImbalanceCompensatorgydF4y2Ba具有外部系数的系统对象™。gydF4y2Ba

创建8-PSK调制器和星座图系统对象。使用名称-值对确保星座图只显示最后100个数据符号,并提供参考星座。gydF4y2Ba

hMod = com . pskmodulator (8);refC =星座(hMod);hScope = com .星座图(gydF4y2Ba...gydF4y2Ba“SymbolsToDisplaySource”gydF4y2Ba,gydF4y2Ba“属性”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“SymbolsToDisplay”gydF4y2Ba, 100,gydF4y2Ba...gydF4y2Ba“ReferenceConstellation”gydF4y2Ba, refC);gydF4y2Ba

创建一个带有算法系数输入端口的I/Q不平衡补偿器对象。gydF4y2Ba

hIQComp = com . iqimbalanccompensator (gydF4y2Ba“CoefficientSource”gydF4y2Ba,gydF4y2Ba输入端口的gydF4y2Ba);gydF4y2Ba

生成随机数据符号并应用8-PSK调制。gydF4y2Ba

数据= randi([0 7],1000,1);txSig = step(hMod,data);gydF4y2Ba

将振幅和相位不平衡应用于传输信号。gydF4y2Ba

ampImb = 5;gydF4y2Ba% dBgydF4y2BaphImb = 15;gydF4y2Ba%度gydF4y2BagainI = 10.^(0.5*ampImb/20);gainQ = 10.^(-0.5*ampImb/20);imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180);imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180));rxSig = imbI + imbQ;gydF4y2Ba

绘制接收信号的星座图。观察到接收到的信号经历了幅度和相移。gydF4y2Ba

步骤(hScope rxSig);gydF4y2Ba

使用gydF4y2Baiqimbal2coefgydF4y2Ba函数来确定给定振幅和相位不平衡的补偿系数。gydF4y2Ba

compCoef = iqimbal2coef(ampImb,phImb);gydF4y2Ba

将补偿系数应用于接收信号gydF4y2Ba一步gydF4y2Ba的功能gydF4y2Bacomm.IQImbalanceCompensatorgydF4y2Ba对象并查看生成的星座。您可以看到,补偿信号星座现在几乎与参考星座对齐。gydF4y2Ba

compSig = step(hIQComp,rxSig,compCoef);步骤(hScope compSig)gydF4y2Ba

从64-QAM信号中去除I/Q不平衡,并在从输入端口设置算法步长时使外部可获得估计系数。gydF4y2Ba

创建一个星座图对象。使用名称-值对确保星座图只显示最后256个数据符号,设置轴限制,并指定引用星座。gydF4y2Ba

M = 64;refC = qammod(0:M-1,M);constDiagram = com . constellationdiagram (gydF4y2Ba...gydF4y2Ba“SymbolsToDisplaySource”gydF4y2Ba,gydF4y2Ba“属性”gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“SymbolsToDisplay”gydF4y2Ba, 256,gydF4y2Ba...gydF4y2Ba“XLimits”gydF4y2Ba-10年[10],gydF4y2Ba...gydF4y2Ba“YLimits”gydF4y2Ba-10年[10],gydF4y2Ba...gydF4y2Ba“ReferenceConstellation”gydF4y2Ba, refC);gydF4y2Ba

创建一个I/Q失衡补偿器系统对象,其中步长被指定为输入参数,估计的系数通过输出端口可用。gydF4y2Ba

iqImbComp = com . iqimbalancecompensator (gydF4y2Ba...gydF4y2Ba“StepSizeSource”gydF4y2Ba,gydF4y2Ba输入端口的gydF4y2Ba,gydF4y2Ba...gydF4y2Ba“CoefficientOutputPort”gydF4y2Ba,真正的);gydF4y2Ba

生成随机数据符号并应用64-QAM调制。gydF4y2Ba

nSym = 25000;data = randi([0 M-1],nSym,1);txSig = qammod(data,M);gydF4y2Ba

将振幅和相位不平衡应用于传输信号。gydF4y2Ba

ampImb = 2;gydF4y2Ba% dBgydF4y2BaphImb = 10;gydF4y2Ba%度gydF4y2BagainI = 10.^(0.5*ampImb/20);gainQ = 10.^(-0.5*ampImb/20);imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180);imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180));rxSig = imbI + imbQ;gydF4y2Ba

绘制接收信号的星座图。gydF4y2Ba

constDiagram (rxSig);gydF4y2Ba

为I/Q不平衡补偿器指定步长参数。gydF4y2Ba

stepSize = 1e-5;gydF4y2Ba

在通过输入参数设置步长时补偿I/Q不平衡。您可以看到,补偿信号星座现在几乎与参考星座对齐。gydF4y2Ba

[compSig,estCoef] = iqImbComp(rxSig,stepSize);constDiagram (compSig)gydF4y2Ba

画出估计系数的实值和虚值。你可以看到它们达到了稳态解。gydF4y2Ba

plot((1:nSym)'/1000,[real(estCoef),imag(estCoef)]) grid xlabel(gydF4y2Ba“符号(千)”gydF4y2Ba) ylabel (gydF4y2Ba的系数值gydF4y2Ba)传说(gydF4y2Ba“真实”的gydF4y2Ba,gydF4y2Ba图像放大的gydF4y2Ba,gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“最佳”gydF4y2Ba)gydF4y2Ba

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物件代表真实,意象。gydF4y2Ba

使用外部参数控制I/Q不平衡补偿器的自适应算法。gydF4y2Ba

将QPSK调制应用于随机数据符号。gydF4y2Ba

数据= randi([0 3],600,1);txSig = pskmod(data,4,pi/4,gydF4y2Ba“灰色”gydF4y2Ba);gydF4y2Ba

创建一个I/Q不平衡补偿器,其中自适应算法通过输入端口控制,步长通过gydF4y2BaStepSizegydF4y2Ba属性,并通过输出端口提供估计的系数。gydF4y2Ba

iqImbComp = com . iqimbalancecompensator (gydF4y2Ba“AdaptInputPort”gydF4y2Ba,真的,gydF4y2Ba...gydF4y2Ba“StepSize”gydF4y2Ba, 0.001,gydF4y2Ba“CoefficientOutputPort”gydF4y2Ba,真正的);gydF4y2Ba

将振幅和相位不平衡应用于传输信号。gydF4y2Ba

ampImb = 5;gydF4y2Ba% dBgydF4y2BaphImb = 15;gydF4y2Ba%度gydF4y2BagainI = 10.^(0.5*ampImb/20);gainQ = 10.^(-0.5*ampImb/20);imbI = real(txSig)*gainI*exp(-0.5i*phImb*pi/180);imbQ = imag(txSig)*gainQ*exp(1i*(pi/2 + 0.5*phImb*pi/180));rxSig = imbI + imbQ;gydF4y2Ba

将补偿操作分成三个部分,其中补偿器对前200个符号启用,对后200个符号禁用,对后200个符号启用。将系数数据保存在三个向量中。gydF4y2Ba

[~,estCoef1] = iqImbComp(rxSig(1:200),true);[~,estCoef2] = iqImbComp(rxSig(201:400),false);[~,estCoef3] = iqImbComp(rxSig(401:600),true);gydF4y2Ba

将复杂算法系数串联起来,并绘制出它们的实部和虚部。gydF4y2Ba

estCoef = [estCoef1;estCoef2;estCoef3];plot((1:60)',[real(estCoef) imag(estCoef)]) grid xlabel(gydF4y2Ba“符号”gydF4y2Ba) ylabel (gydF4y2Ba的系数值gydF4y2Ba)传说(gydF4y2Ba“真实”的gydF4y2Ba,gydF4y2Ba“虚”gydF4y2Ba,gydF4y2Ba“位置”gydF4y2Ba,gydF4y2Ba“最佳”gydF4y2Ba)gydF4y2Ba

图中包含一个轴对象。axis对象包含2个line类型的对象。这些物体代表真实,想象。gydF4y2Ba

观察到,在补偿器被禁用的时间内,系数不适应。gydF4y2Ba

算法gydF4y2Ba

影响直接转换接收机的主要缺陷之一是接收信号的同相分量和正交分量之间的不平衡。与其改进前端模拟硬件,不如容忍一定程度的I/Q不平衡,然后实施补偿方法,这更具有成本效益。采用基于圆度的盲补偿算法作为I/Q不平衡补偿器的基础。gydF4y2Ba

给出了广义I/Q不平衡模型,其中gydF4y2BaggydF4y2Ba是振幅不平衡和gydF4y2BaϕgydF4y2Ba相位不平衡(理想情况下,gydF4y2BaggydF4y2Ba= 1gydF4y2Ba而且gydF4y2BaϕgydF4y2Ba= 0gydF4y2Ba).在图中,gydF4y2BaH (f)gydF4y2Ba是分支的名义频率响应,例如,低通滤波器。gydF4y2BaHgydF4y2Ba我gydF4y2Ba(f)gydF4y2Ba而且gydF4y2BaHgydF4y2Ba问gydF4y2Ba(f)gydF4y2Ba表示与标称响应不同的同相和正交振幅和相位响应的部分。有了完美的匹配,gydF4y2BaHgydF4y2Ba我gydF4y2Ba(f)gydF4y2Ba=gydF4y2BaHgydF4y2Ba问gydF4y2Ba(f)gydF4y2Ba= 1gydF4y2Ba.gydF4y2Ba

让gydF4y2Baz (t)gydF4y2Ba为接收信号的理想基带等效信号,gydF4y2Bar (t)gydF4y2Ba,其傅里叶变换记为gydF4y2BaZ (f)gydF4y2Ba.给定广义I/Q不平衡模型,不平衡信号的傅里叶变换,gydF4y2Bax (t)gydF4y2Ba=gydF4y2BaxgydF4y2Ba我gydF4y2Ba(t)gydF4y2Ba+gydF4y2BaxgydF4y2Ba问gydF4y2Ba(t)gydF4y2Ba,是gydF4y2Ba

XgydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba GgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ZgydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba +gydF4y2Ba GgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ZgydF4y2Ba *gydF4y2Ba (gydF4y2Ba −gydF4y2Ba fgydF4y2Ba )gydF4y2Ba

在哪里gydF4y2BaGgydF4y2Ba1gydF4y2Ba(f)gydF4y2Ba而且gydF4y2BaGgydF4y2Ba2gydF4y2Ba(f)gydF4y2Ba是I/Q不平衡的直接和共轭组分。这些组件被定义为gydF4y2Ba

GgydF4y2Ba 1gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba HgydF4y2Ba 我gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba +gydF4y2Ba HgydF4y2Ba 问gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ggydF4y2Ba 经验值gydF4y2Ba (gydF4y2Ba −gydF4y2Ba jgydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba ]gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba GgydF4y2Ba 2gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba =gydF4y2Ba [gydF4y2Ba HgydF4y2Ba 我gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba +gydF4y2Ba HgydF4y2Ba 问gydF4y2Ba (gydF4y2Ba fgydF4y2Ba )gydF4y2Ba ggydF4y2Ba 经验值gydF4y2Ba (gydF4y2Ba jgydF4y2Ba ϕgydF4y2Ba )gydF4y2Ba ]gydF4y2Ba /gydF4y2Ba 2gydF4y2Ba

应用傅里叶反变换gydF4y2BaX (f)gydF4y2Ba时,信号模型为gydF4y2Bax (t)gydF4y2Ba=gydF4y2BaggydF4y2Ba1gydF4y2Ba(t)gydF4y2Ba*gydF4y2Baz (t)gydF4y2Ba+gydF4y2BaggydF4y2Ba2gydF4y2Ba(t)gydF4y2Ba*gydF4y2BazgydF4y2Ba*gydF4y2Ba(t)gydF4y2Ba.gydF4y2Ba

这就提出了补偿器结构,如图所示,其中离散时间符号用于表示变量。补偿后的信号表示为gydF4y2Bay (n) =gydF4y2Bax (n)gydF4y2Ba+gydF4y2Ba的天气gydF4y2Ba*gydF4y2Ba(n)gydF4y2Ba.gydF4y2Ba

一个简单的算法形式gydF4y2Ba

{gydF4y2Ba ygydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba +gydF4y2Ba wgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba xgydF4y2Ba *gydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba wgydF4y2Ba (gydF4y2Ba ngydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba =gydF4y2Ba wgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba −gydF4y2Ba 米gydF4y2Ba ygydF4y2Ba 2gydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba

用于确定权重,因为它确保输出是“适当的”,即,gydF4y2Ba EgydF4y2Ba [gydF4y2Ba ygydF4y2Ba 2gydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ]gydF4y2Ba =gydF4y2Ba 0gydF4y2Ba [1]gydF4y2Ba.的初始值gydF4y2BawgydF4y2Ba是由gydF4y2BaInitialCoefficientgydF4y2Ba属性,该属性的默认值为gydF4y2Ba0 + 0igydF4y2Ba.gydF4y2Ba米gydF4y2Ba步长是否与gydF4y2BaStepSizegydF4y2Ba财产。gydF4y2Ba

选定的参考书目gydF4y2Ba

[1] Anttila, L., M. Valkama, M. Renfors。正交无线电接收机中频率选择性I/Q不平衡的盲补偿:基于圆度的方法gydF4y2BaIEEE ICASSPgydF4y2Ba《中国科学院学报》,2007。gydF4y2Ba

[2] Kiayani, A., L. Anttila, Y. Zou,和M. Valkama,“OFDM系统中减轻多重射频损伤的高级接收机设计:算法和射频测量”,gydF4y2Ba电子与计算机工程杂志gydF4y2Ba, Vol. 2012。gydF4y2Ba

扩展功能gydF4y2Ba

版本历史gydF4y2Ba

在R2014b中引入gydF4y2Ba