文档gydF4y2Ba

agc系统对象gydF4y2Ba

自适应调整增益的恒定信号级输出gydF4y2Ba

描述gydF4y2Ba

的gydF4y2Bacomm.AGCgydF4y2Ba系统对象™创建一个自动增益控制器(AGC),自适应地调整其增益,以在输出处实现恒定的信号水平。gydF4y2Ba

自适应调整增益以实现恒定信号级输出:gydF4y2Ba

  1. 定义和设置自动增益控制器对象。看到gydF4y2Ba建设gydF4y2Ba.gydF4y2Ba

  2. 调用gydF4y2Ba一步gydF4y2Ba根据的特性自适应地调整增益并在输出处达到恒定的信号电平gydF4y2Bacomm.AGCgydF4y2Ba.的行为gydF4y2Ba一步gydF4y2Ba特定于工具箱中的每个对象。gydF4y2Ba

请注意gydF4y2Ba

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

建设gydF4y2Ba

H = com . agcgydF4y2Ba创建一个AGC系统对象,gydF4y2BaHgydF4y2Ba,它自适应地调整其增益,以在输出处实现恒定的信号电平。gydF4y2Ba

H = com . agc (gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba创建一个AGC对象,gydF4y2BaHgydF4y2Ba,使用指定的属性gydF4y2Ba的名字gydF4y2Ba设置为指定的gydF4y2Ba价值gydF4y2Ba.可以以任意顺序指定附加的名称-值对参数,如(gydF4y2BaName1gydF4y2Ba,gydF4y2BaValue1gydF4y2Ba、……gydF4y2Ba以gydF4y2Ba,gydF4y2Ba家gydF4y2Ba).gydF4y2Ba

属性gydF4y2Ba

AdaptationStepSizegydF4y2Ba

增益更新的步长gydF4y2Ba

指定步长为实正标量。默认为gydF4y2Ba0.01gydF4y2Ba.增加步长允许AGC更快地响应输入信号水平的变化,但增加稳态运行时输出信号水平的变化。gydF4y2Ba

DesiredOutputPowergydF4y2Ba

目标输出功率gydF4y2Ba

指定所需的输出功率级别为实正标量。功率的单位是瓦比1欧姆。默认为gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

AveragingLengthgydF4y2Ba

平均窗口的长度gydF4y2Ba

将样本中平均窗口的长度指定为正整数标量。默认为gydF4y2BaOne hundred.gydF4y2Ba.gydF4y2Ba

请注意gydF4y2Ba

如果你使用高阶QAM信号的AGC,你可能需要减少在稳态运行时增益的变化。检查AGC输出的散点图,根据需要增加平均长度。的增加gydF4y2BaAveragingLengthgydF4y2Ba降低执行速度。gydF4y2Ba

MaxPowerGaingydF4y2Ba

以分贝为单位的最大功率增益gydF4y2Ba

将AGC的最大增益(以分贝为单位)指定为正标量。默认为gydF4y2Ba60gydF4y2Ba.gydF4y2Ba

如果AGC的输入信号功率很小,AGC的增益就会很大。当输入信号功率突然增加时,这可能会导致问题。使用gydF4y2BaMaxPowerGaingydF4y2Ba通过限制AGC应用于输入信号的增益来避免这种情况。gydF4y2Ba

方法gydF4y2Ba

重置gydF4y2Ba 重置自动增益控制器内部状态gydF4y2Ba
一步gydF4y2Ba 对输入信号应用自适应增益gydF4y2Ba
通用于所有系统对象gydF4y2Ba
释放gydF4y2Ba

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

例子gydF4y2Ba

全部展开gydF4y2Ba

对QAM调制信号应用不同的AGC平均长度。比较应用AGC后信号的方差和曲线图。gydF4y2Ba

初始化三个AGC系统对象,平均窗口长度设置为10、100和1000个样本。gydF4y2Ba

agc1 = com . agc (gydF4y2Ba“AveragingLength”gydF4y2Ba10);agc2 = com . agc (gydF4y2Ba“AveragingLength”gydF4y2Ba, 100);agc3 = com . agc (gydF4y2Ba“AveragingLength”gydF4y2Ba, 1000);gydF4y2Ba

生成M-QAM调制和凸起余弦脉冲状分组数据。gydF4y2Ba

M = 16;d = randi([0 M-1],1000,1);s = qammod(d,M);X = 0.1*s;pulseShaper = com . raisedcosinetransmitfilter;y = awgn(pulseShaper(x),inf);gydF4y2Ba

应用AGC。gydF4y2Ba

R1 = agc1(y);R2 = agc2(y);R3 = agc3(y);gydF4y2Ba

绘制并比较信号。gydF4y2Ba

图(1)副图(4,1,1)图(abs(y))标题(gydF4y2Ba自动增益控制输入的gydF4y2Ba) subplot(4,1,2) plot(abs(r1)) axis([0 8000 0 10]) title(gydF4y2Ba'AGC输出(AveragingLength = 10个样本)'gydF4y2Ba) text(4000, 5, sprintf(gydF4y2Ba'方差= %f'gydF4y2Ba,var(r1(3000:end)))) subplot(4,1,3) plot(abs(r2)) axis([0 8000 0 10]) title(gydF4y2Ba'AGC输出(AveragingLength = 100 sample)'gydF4y2Ba) text(4000, 5, sprintf(gydF4y2Ba'方差= %f'gydF4y2Ba,var(r2(3000:end)))) subplot(4,1,4) plot(abs(r3)) axis([0 8000 0 10]) title(gydF4y2Ba'AGC输出(AveragingLength = 1000样本)'gydF4y2Ba) text(4000, 5, sprintf(gydF4y2Ba'方差= %f'gydF4y2Bavar (r3(3000:结束))))gydF4y2Ba

随着平均长度的增加,AGC输出处的方差减小。gydF4y2Ba

对QPSK调制信号应用不同的AGC最大增益水平。当最大增益过小时,AGC后的信号将达不到预期的振幅。当最大增益太大时,AGC后的信号将过冲,并可能饱和,导致接收包开始时的信号丢失。当增益达到最优水平时,AGC后的信号达到预期的幅值,不会因饱和而导致信号丢失。比较应用AGC后的信号图。gydF4y2Ba

初始化三个AGC system对象,最大增益值设置为10db、20db和30db。gydF4y2Ba

agc1 = com . agc (gydF4y2Ba“MaxPowerGain”gydF4y2Ba10);agc2 = com . agc (gydF4y2Ba“MaxPowerGain”gydF4y2Ba, 20);agc3 = com . agc (gydF4y2Ba“MaxPowerGain”gydF4y2Ba, 30);gydF4y2Ba

生成QPSK调制和凸起余弦脉冲形状的分组数据。gydF4y2Ba

M = 4;pktLen = 10000;d = randi([0 M-1],pktLen,1);s = pskmod(d,M,pi/4);x = repmat([0 (pktLen,1);0.3 * s], 3, 1);pulseShaper = com . raisedcosinetransmitfilter;y = awgn(pulseShaper(x),50);gydF4y2Ba

应用AGC和绘图。gydF4y2Ba

R1 = agc1(y);R2 = agc2(y);R3 = agc3(y);gydF4y2Ba

绘制并比较信号。gydF4y2Ba

图(1)副图(4,1,1)图(abs(y))标题(gydF4y2Ba自动增益控制输入的gydF4y2Ba) subplot(4,1,2) plot(abs(r1)) title(gydF4y2Ba'AGC输出(maxpowerergain = 10 dB)'gydF4y2Ba副情节(4,1,3)情节(abs(r2))标题(gydF4y2Ba'AGC输出(maxpowerergain = 20 dB)'gydF4y2Ba) subplot(4,1,4) plot(abs(r3))gydF4y2Ba'AGC输出(maxpowerergain = 30 dB)'gydF4y2Ba)gydF4y2Ba

该图比较了AGC的输入信号和AGC的输出信号在不同的最大增益水平下的差异。当最大增益设置为10dB时,AGC输出不能达到预期的输出功率水平。当最大增益设置为20dB时,AGC输出达到所需水平而不饱和。当最大增益设置为30dB时,AGC输出过冲有信号饱和和数据丢失的风险。信息包之间只有输入信号中的噪声。gydF4y2Ba

如图所示,在分组传输中,当没有数据被接收时,可能会有较长的时间。这导致AGC增加到最大增益设置。如果报文到达时AGC增益过高,则输出功率超调,直到AGC能够响应输入功率水平的变化并降低其增益。gydF4y2Ba

对QPSK调制信号应用不同的AGC步长。比较AGC应用后的信号。gydF4y2Ba

初始化三个AGC system对象,步长设置为1e-1、1e-3和1e-4。gydF4y2Ba

agc1 = com . agc (gydF4y2Ba“AdaptationStepSize”gydF4y2Ba1 e 1);agc2 = com . agc (gydF4y2Ba“AdaptationStepSize”gydF4y2Ba1 e - 3);agc3 = com . agc (gydF4y2Ba“AdaptationStepSize”gydF4y2Ba1的军医);gydF4y2Ba

生成带有凸起余弦脉冲整形的QPSK调制数据。gydF4y2Ba

D = randi([0 3],500,1);S = pskmod(d,4,pi/4);X = 0.1*s;pulseShaper = com . raisedcosinetransmitfilter;y = pulseShaper(x);gydF4y2Ba

应用AGC。gydF4y2Ba

R1 = agc1(y);R2 = agc2(y);R3 = agc3(y);gydF4y2Ba

绘制AGC的输入信号和AGC步长不同后的输出信号。gydF4y2Ba

图subplot(4,1,1) plot(abs(y)) title(gydF4y2Ba自动增益控制输入的gydF4y2Ba) subplot(4,1,2) plot(abs(r1)) title(gydF4y2Ba'AGC输出(AdaptionStepSize = 1e-1)'gydF4y2Ba副情节(4,1,3)情节(abs(r2))标题(gydF4y2Ba'AGC输出(AdaptionStepSize = 1e-3)'gydF4y2Ba) subplot(4,1,4) plot(abs(r3))gydF4y2Ba'AGC输出(AdaptionStepSize = 1e-4)'gydF4y2Ba)gydF4y2Ba

当步长设置为1e-1时,AGC输出超调但收敛非常快。当步长设置为1e-3时,AGC输出超调消失,AGC收敛平缓但较慢。当最大增益设置为1e-4时,AGC需要很长时间才能收敛。gydF4y2Ba

调制和放大一个QPSK信号。使用AGC将接收到的信号振幅设置为大约1伏。然后绘制输出图。gydF4y2Ba

使用QPSK System对象创建一个QPSK调制信号。gydF4y2Ba

Data = randi([0 3],1000,1);qpsk = com . qpskmodulator;modData = qpsk(data);gydF4y2Ba

使调制信号衰减。gydF4y2Ba

txSig = 0.1*modData;gydF4y2Ba

创建AGC系统对象™,并通过它传递传输的信号gydF4y2Ba一步gydF4y2Ba函数。AGC将接收到的信号功率调整到约1w。gydF4y2Ba

agc = com . agc;rxSig = agc(txSig);gydF4y2Ba

绘制AGC达到稳态后发射信号和接收信号的信号星座图。gydF4y2Ba

h = scatterplot(txSig(200:end),1,0,gydF4y2Ba‘*’gydF4y2Ba);持有gydF4y2Ba在gydF4y2Ba散点图(rxSig(200:结束),1,0,gydF4y2Ba”或“gydF4y2Ba、h);传奇(gydF4y2Ba“AGC输入”gydF4y2Ba,gydF4y2Ba“AGC的输出”gydF4y2Ba)gydF4y2Ba

在AGC达到稳定状态后,测量和比较发送和接收信号的功率。发射信号的功率比接收信号的功率小100倍。gydF4y2Ba

txPower = var(txSig(200:end));rxPower = var(rxSig(200:end));[txPower rxPower]gydF4y2Ba
ans =gydF4y2Ba1×2gydF4y2Ba0.0100 - 0.9970gydF4y2Ba

创建两个AGC系统对象™,使用两个不同的步长和相同的更新周期来调整接收信号的水平。gydF4y2Ba

产生一个8-PSK信号,功率等于10w。gydF4y2Ba

Data = randi([0 7],200,1);modData =√(10)*pskmod(data,8,pi/8,)gydF4y2Ba“灰色”gydF4y2Ba);gydF4y2Ba

创建一对凸起余弦匹配过滤器gydF4y2Ba获得gydF4y2Ba属性设置,使它们具有统一的输出功率。gydF4y2Ba

txfilter = com . raisedcosinetransmitfilter (gydF4y2Ba“获得”gydF4y2Ba、sqrt (8));rxfilter = com . raisedcosinereceivefilter (gydF4y2Ba“获得”gydF4y2Ba、sqrt (1/8));gydF4y2Ba

通过凸起的余弦发射滤波对象对调制信号进行滤波。gydF4y2Ba

txSig = txfilter(modData);gydF4y2Ba

创建两个AGC对象来调整接收的信号级别。分别选择0.01和0.1的步长。设置更新周期为10。gydF4y2Ba

agc1 = com . agc (gydF4y2Ba“AdaptationStepSize”gydF4y2Ba, 0.01);agc2 = com . agc (gydF4y2Ba“AdaptationStepSize”gydF4y2Ba, 0.1);gydF4y2Ba

将调制信号通过两个AGC对象。gydF4y2Ba

agcOut1 = agc1(txSig);agcOut2 = agc2(txSig);gydF4y2Ba

通过使用凸起的余弦接收过滤器对象对AGC输出信号进行过滤。gydF4y2Ba

rxSig1 = rxfilter(agcOut1);rxSig2 = rxfilter(agcOut2);gydF4y2Ba

绘制经过发送-接收滤波器对的经过过滤的AGC响应的功率,同时考虑到10个符号的延迟。gydF4y2Ba

情节([abs (rxSig1(11:110))。^2 abs(rxSig2(11:110)).^2])网格gydF4y2Ba在gydF4y2Ba包含(gydF4y2Ba“符号”gydF4y2Ba) ylabel (gydF4y2Ba“权力(W)”gydF4y2Ba)传说(gydF4y2Ba“步长0.01”gydF4y2Ba,gydF4y2Ba“步长0.1”gydF4y2Ba)gydF4y2Ba

步长越大的信号收敛速度越快,达到AGC目标功率水平1w。gydF4y2Ba

通过只包括最后100个符号,绘制稳态滤波AGC信号的功率。gydF4y2Ba

情节((101:200),abs (rxSig1(101:200))。^2 abs(rxSig2(101:200)).^2])网格gydF4y2Ba在gydF4y2Ba包含(gydF4y2Ba“符号”gydF4y2Ba) ylabel (gydF4y2Ba“权力(W)”gydF4y2Ba)传说(gydF4y2Ba“步长0.01”gydF4y2Ba,gydF4y2Ba“步长0.1”gydF4y2Ba)gydF4y2Ba

较大的AGC步长导致较不准确的增益校正。gydF4y2Ba

精确度的降低意味着要与gydF4y2BaAdaptationStepSizegydF4y2Ba财产。较大的值导致更快的收敛,代价是较不准确的增益控制。gydF4y2Ba

将衰减的QPSK包数据传递给两个最大增益不同的agc。然后显示结果。gydF4y2Ba

创建两个200符号的QSPK数据包。通过1200个符号的帧传输数据包。gydF4y2Ba

modData1 = pskmod(randi([0 3],200,1),4,pi/4);modData2 = pskmod(randi([0 3],200,1),4,pi/4);txSig = [modData1;0 (400 1);modData2;0 (400 1)];gydF4y2Ba

将传输的突发信号衰减20分贝,并绘制其功率图。gydF4y2Ba

rxSig = 0.1*txSig;rxSigPwr = abs(rxSig).^2;图(rxSigPwr)gydF4y2Ba“符号”gydF4y2Ba) ylabel (gydF4y2Ba“权力(W)”gydF4y2Ba)gydF4y2Ba

创建两个agc,其中gydF4y2Baagc1gydF4y2Ba最大功率增益为30分贝gydF4y2Baagc2gydF4y2Ba最大功率增益为24 dB。gydF4y2Ba

agc1 = com . agc (gydF4y2Ba“MaxPowerGain”gydF4y2Ba30岁的gydF4y2Ba...gydF4y2Ba“AdaptationStepSize”gydF4y2Ba, 0.02);agc2 = com . agc (gydF4y2Ba“MaxPowerGain”gydF4y2Ba, 24岁,gydF4y2Ba...gydF4y2Ba“AdaptationStepSize”gydF4y2Ba, 0.02);gydF4y2Ba

将衰减后的信号通过agc,计算输出功率。gydF4y2Ba

rxAGC1 = agc1(rxSig);rxAGC2 = agc2(rxSig);pwrAGC1 = abs(rxAGC1).^2;pwrAGC2 = abs(rxAGC2).^2;gydF4y2Ba

画出输出功率。gydF4y2Ba

情节([pwrAGC2])传说(gydF4y2Ba“AGC1”gydF4y2Ba,gydF4y2Ba“AGC2”gydF4y2Ba) xlabel(gydF4y2Ba“符号”gydF4y2Ba) ylabel (gydF4y2Ba“权力(W)”gydF4y2Ba)gydF4y2Ba

最初,对于第二个数据包,gydF4y2Baagc1gydF4y2Ba输出信号功率过高,因为AGC是在无数据传输时使用了最大增益。相应的gydF4y2Baagc2gydF4y2Ba输出信号功率不超过1w的目标功率水平相同数量。由于它的最大增益更小,所以它更快地收敛到正确的幂。gydF4y2Ba

算法gydF4y2Ba

对数循环AGCgydF4y2Ba

对于对数环路AGC,输出信号是输入信号和环路增益的指数的乘积。误差信号是参考电平与检测器输出的对数和环路增益的指数的乘积之间的差值。在乘以步长后,AGC将错误信号传递给积分器。gydF4y2Ba

对数回路AGC为各种信号类型提供了良好的性能,包括幅度调制。不同于以前的AGC (R2015a和更早的),检测器应用于输入信号,这导致更快的收敛时间和增加信号功率变化在检测器输入。较大的变化对浮点系统来说不是问题。给出了该算法的框图。gydF4y2Ba

数学上,该算法概括为gydF4y2Ba

ygydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ⋅gydF4y2Ba 经验值gydF4y2Ba (gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba zgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba DgydF4y2Ba (gydF4y2Ba xgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba )gydF4y2Ba ⋅gydF4y2Ba 经验值gydF4y2Ba (gydF4y2Ba 2gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba )gydF4y2Ba egydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba 一个gydF4y2Ba −gydF4y2Ba lngydF4y2Ba (gydF4y2Ba zgydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba )gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba =gydF4y2Ba ggydF4y2Ba (gydF4y2Ba ngydF4y2Ba −gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba +gydF4y2Ba KgydF4y2Ba ⋅gydF4y2Ba egydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2Ba

  • xgydF4y2Ba表示输入信号。gydF4y2Ba

  • ygydF4y2Ba表示输出信号。gydF4y2Ba

  • ggydF4y2Ba表示环路增益。gydF4y2Ba

  • D(•)gydF4y2Ba表示检测器函数。gydF4y2Ba

  • zgydF4y2Ba表示检测器输出。gydF4y2Ba

  • 一个gydF4y2Ba表示参考值。gydF4y2Ba

  • egydF4y2Ba表示错误信号。gydF4y2Ba

  • KgydF4y2Ba表示步长。gydF4y2Ba

AGC探测器gydF4y2Ba

AGC使用平方定律检测器,其中检测器的输出,gydF4y2BazgydF4y2Ba,由gydF4y2Ba

zgydF4y2Ba (gydF4y2Ba 米gydF4y2Ba )gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba NgydF4y2Ba ∑gydF4y2Ba ngydF4y2Ba =gydF4y2Ba 米gydF4y2Ba NgydF4y2Ba (gydF4y2Ba 米gydF4y2Ba +gydF4y2Ba 1gydF4y2Ba )gydF4y2Ba NgydF4y2Ba −gydF4y2Ba 1gydF4y2Ba |gydF4y2Ba ygydF4y2Ba (gydF4y2Ba ngydF4y2Ba )gydF4y2Ba |gydF4y2Ba 2gydF4y2Ba ,gydF4y2Ba

在哪里gydF4y2BaNgydF4y2Ba表示更新周期。gydF4y2Ba

AGC性能标准gydF4y2Ba

  • 攻击时间- AGC响应输入放大器增加的持续时间。gydF4y2Ba

  • 衰减时间- AGC响应输入振幅下降的持续时间。gydF4y2Ba

  • 增益泵送-增益值在稳态运行时的变化。gydF4y2Ba

增加步长减小了攻击时间和衰减时间,但也增加了增益泵浦。gydF4y2Ba

扩展功能gydF4y2Ba

另请参阅gydF4y2Ba

在R2013a中介绍gydF4y2Ba

这个话题有帮助吗?gydF4y2Ba