主要内容gydF4y2Ba

comm.LinearEqualizergydF4y2Ba

使用线性过滤平衡调制信号gydF4y2Ba

描述gydF4y2Ba

的gydF4y2Bacomm.LinearEqualizergydF4y2Ba系统对象™使用一个线性滤波器抽头延迟线的加权和平衡调制信号通过色散信道传播。均衡器对象自适应调整利用权重基于所选择的算法。有关更多信息,请参见gydF4y2Ba算法gydF4y2Ba。gydF4y2Ba

使用一个线性滤波器:平衡调制信号gydF4y2Ba

  1. 创建gydF4y2Bacomm.LinearEqualizergydF4y2Ba对象并设置其属性。gydF4y2Ba

  2. 调用对象的参数,就好像它是一个函数。gydF4y2Ba

了解更多关于系统对象是如何工作的,看到的gydF4y2Ba系统对象是什么?gydF4y2Ba

创建gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

lineqgydF4y2Ba= comm.LinearEqualizergydF4y2Ba创建一个自适应平衡信号线性均衡器系统对象。gydF4y2Ba

例子gydF4y2Ba

lineqgydF4y2Ba= comm.LinearEqualizer (gydF4y2Ba的名字gydF4y2Ba,gydF4y2Ba价值gydF4y2Ba)gydF4y2Ba设置使用一个或多个属性名称-值对。例如,gydF4y2Bacomm.LinearEqualizer(“算法”、“RLS”)gydF4y2Ba配置均衡器对象更新利用权重使用递归最小二乘(RLS)算法。在报价附上每个属性的名字。gydF4y2Ba

属性gydF4y2Ba

全部展开gydF4y2Ba

属性,除非另有注明gydF4y2BanontunablegydF4y2Ba后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,gydF4y2Ba释放gydF4y2Ba函数打开它们。gydF4y2Ba

如果一个属性gydF4y2Ba可调gydF4y2Ba在任何时候,你可以改变它的值。gydF4y2Ba

改变属性值的更多信息,请参阅gydF4y2Ba系统设计在MATLAB使用系统对象gydF4y2Ba。gydF4y2Ba

自适应算法用于均衡,指定这些值之一:gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

均衡器水龙头,指定为一个正整数。均衡器水龙头的数量必须大于或等于的价值gydF4y2BaInputSamplesPerSymbolgydF4y2Ba财产。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

所使用的步长自适应算法,指定为一个积极的标量。增加步长减少了均衡器收敛时间,但使均衡器输出估计更不稳定。gydF4y2Ba

提示gydF4y2Ba

要确定允许的最大步长,可以使用gydF4y2BamaxstepgydF4y2Ba对象的功能。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2Ba算法gydF4y2Ba来gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2Ba“CMA”gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

遗忘因子的自适应算法,指定为一个标量范围(0,1)。减少遗忘因子降低了均衡器收敛时间,但使均衡器输出估计更不稳定。gydF4y2Ba

可调:gydF4y2Ba是的gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2Ba算法gydF4y2Ba来gydF4y2BaRLS的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

最初的逆相关矩阵,指定为一个标量或gydF4y2BaNgydF4y2Ba水龙头gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba水龙头gydF4y2Ba矩阵。gydF4y2BaNgydF4y2Ba水龙头gydF4y2Ba等于gydF4y2BaNumTapsgydF4y2Ba属性值。如果您指定gydF4y2BaInitialInverseCorrelationMatrixgydF4y2Ba作为一个标量,gydF4y2Ba一个gydF4y2Ba,均衡器设置初始逆相关矩阵gydF4y2Ba一个gydF4y2Ba乘以单位矩阵:gydF4y2Ba一个gydF4y2Ba(gydF4y2Ba眼睛gydF4y2Ba(gydF4y2BaNgydF4y2Ba水龙头gydF4y2Ba))。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2Ba算法gydF4y2Ba来gydF4y2BaRLS的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

信号星座,指定为一个向量。默认值是QPSK星座使用这段代码生成:gydF4y2Bapskmod(0:3 4π/ 4)gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

参考利用,指定为一个正整数小于或等于gydF4y2BaNumTapsgydF4y2Ba属性值。均衡器使用参考利用位置跟踪的主要能源通道。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

输入信号延迟样本相对于的重置时间均衡器,指定为一个非负整数。如果输入信号是一个向量的长度大于1,然后输入延迟相对于开始的输入向量。如果输入信号是一个标量,那么输入延迟是相对于第一次调用系统的对象和系统的第一次调用对象在调用之后gydF4y2Ba释放gydF4y2Ba或gydF4y2Ba重置gydF4y2Ba对象的功能。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

每个符号输入样本数量,指定为一个正整数。将这个属性设置为任意数量大于1有效地创建了一个略微间隔的均衡器。有关更多信息,请参见gydF4y2Ba象征抽头间隔gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

使训练控制输入,指定为一个逻辑gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)或gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba)。将这个属性设置为gydF4y2Ba真正的gydF4y2Ba使均衡器训练国旗输入gydF4y2Ba特遣部队gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

时更新利用权重不培训,指定为一个逻辑gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba)或gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)。如果将此属性设置为gydF4y2Ba真正的gydF4y2Ba,系统对象使用定向模式决定更新均衡器抽头权值。如果将此属性设置为gydF4y2Ba假gydF4y2Ba,系统对象使均衡器抽头权值训练后不变。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

适应利用权重请求的来源,指定这些值之一:gydF4y2Ba

  • “属性”gydF4y2Ba——指定这个值使用gydF4y2BaAdaptWeightsgydF4y2Ba属性控制当系统对象适应利用权重。gydF4y2Ba

  • 输入端口的gydF4y2Ba——指定这个值使用gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba输入控制系统对象时适应利用权重。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2Ba算法gydF4y2Ba来gydF4y2Ba“CMA”gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

调整权重,指定为一个逻辑gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba)或gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)。如果将此属性设置为gydF4y2Ba真正的gydF4y2Ba更新均衡器抽头权值,系统对象。如果将此属性设置为gydF4y2Ba假gydF4y2Ba,系统对象使均衡器抽头权值不变。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2BaAdaptWeightsSourcegydF4y2Ba来gydF4y2Ba“属性”gydF4y2Ba并设置gydF4y2BaAdaptAfterTraininggydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

首次利用权重来源,指定为gydF4y2Ba

  • “汽车”gydF4y2Ba——点击初始化权重algorithm-specific默认值,如所描述的gydF4y2BaInitialWeightsgydF4y2Ba财产。gydF4y2Ba

  • “属性”gydF4y2Ba——点击初始化权值使用gydF4y2BaInitialWeightsgydF4y2Ba属性值。gydF4y2Ba

数据类型:gydF4y2Ba字符gydF4y2Ba|gydF4y2Ba字符串gydF4y2Ba

最初开发所使用的权重自适应算法,指定为一个标量或矢量。默认值是gydF4y2Ba0gydF4y2Ba当gydF4y2Ba算法gydF4y2Ba属性设置为gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2BaRLS的gydF4y2Ba。默认值是gydF4y2Ba[0,0,1,0,0)gydF4y2Ba当gydF4y2Ba算法gydF4y2Ba属性设置为gydF4y2Ba“CMA”gydF4y2Ba。gydF4y2Ba

如果您指定gydF4y2BaInitialWeightsgydF4y2Ba作为一个向量,向量的长度必须相等gydF4y2BaNumTapsgydF4y2Ba属性值。如果您指定gydF4y2BaInitialWeightsgydF4y2Ba作为一个标量,均衡器使用标量扩展来创建一个向量的长度gydF4y2BaNumTapsgydF4y2Ba所有的值设置为gydF4y2BaInitialWeightsgydF4y2Ba。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个特性,设置gydF4y2BaInitialWeightsSourcegydF4y2Ba来gydF4y2Ba“属性”gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

利用重量更新时期符号,指定为一个正整数。均衡器更新利用权重处理后这个数字的符号。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

使用gydF4y2Ba

描述gydF4y2Ba

例子gydF4y2Ba

ygydF4y2Ba= lineq (gydF4y2BaxgydF4y2Ba,gydF4y2BatsymgydF4y2Ba)gydF4y2Ba平等的输入信号gydF4y2BaxgydF4y2Ba利用训练符号gydF4y2BatsymgydF4y2Ba。输出是平衡的符号。要启用这种语法,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2BaRLS的gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

ygydF4y2Ba= lineq (gydF4y2BaxgydF4y2Ba,gydF4y2BatsymgydF4y2Ba,gydF4y2Ba特遣部队gydF4y2Ba)gydF4y2Ba还指定了训练国旗gydF4y2Ba特遣部队gydF4y2Ba。开始训练时的系统对象gydF4y2Ba特遣部队gydF4y2Ba改变从gydF4y2Ba假gydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba(上升边缘)。火车,直到所有符号的系统对象gydF4y2BatsymgydF4y2Ba处理。输入gydF4y2BatsymgydF4y2Ba被忽略时gydF4y2Ba特遣部队gydF4y2Ba是gydF4y2Ba假gydF4y2Ba。要启用这种语法,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2BaRLS的gydF4y2Ba和gydF4y2BaTrainingFlagInputPortgydF4y2Ba财产gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

ygydF4y2Ba= lineq (gydF4y2BaxgydF4y2Ba)gydF4y2Ba平等的输入信号gydF4y2BaxgydF4y2Ba。要启用这种语法,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“CMA”gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

ygydF4y2Ba= lineq (gydF4y2BaxgydF4y2Ba,gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba)gydF4y2Ba还指定了适应重量国旗gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba。如果gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba是gydF4y2Ba真正的gydF4y2Ba适应均衡器抽头权值,系统对象。如果gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba是gydF4y2Ba假gydF4y2Ba,系统对象保持体重不变。要启用这种语法,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“CMA”gydF4y2Ba和gydF4y2BaAdaptWeightsSourcegydF4y2Ba财产gydF4y2Ba输入端口的gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

(gydF4y2BaygydF4y2Ba,gydF4y2Ba犯错gydF4y2Ba)= lineq (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba返回错误信号gydF4y2Ba犯错gydF4y2Ba从任何以前的语法使用输入参数。gydF4y2Ba

例子gydF4y2Ba

(gydF4y2BaygydF4y2Ba,gydF4y2Ba犯错gydF4y2Ba,gydF4y2Ba权重gydF4y2Ba)= lineq (gydF4y2Ba___gydF4y2Ba)gydF4y2Ba同样的回报gydF4y2Ba权重gydF4y2Ba水龙头权重,最后利用体重更新,从任何以前的语法使用输入参数。gydF4y2Ba

输入参数gydF4y2Ba

全部展开gydF4y2Ba

输入信号,指定为一个列向量。必须等于输入信号向量长度的整数倍数gydF4y2BaInputSamplesPerSymbolgydF4y2Ba属性值。有关更多信息,请参见gydF4y2Ba象征抽头间隔gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba
复数的支持:金宝appgydF4y2Ba是的gydF4y2Ba

训练符号,指定为一个列向量的长度小于或等于输入的长度gydF4y2BaxgydF4y2Ba。输入gydF4y2BatsymgydF4y2Ba被忽略时gydF4y2Ba特遣部队gydF4y2Ba是gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个论点,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2BaRLS的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba
复数的支持:金宝appgydF4y2Ba是的gydF4y2Ba

培训国旗,指定为一个逻辑gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba)或gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)。开始训练时的系统对象gydF4y2Ba特遣部队gydF4y2Ba改变从gydF4y2Ba假gydF4y2Ba来gydF4y2Ba真正的gydF4y2Ba(上升边缘)。火车,直到所有符号的系统对象gydF4y2BatsymgydF4y2Ba处理。输入gydF4y2BatsymgydF4y2Ba被忽略时gydF4y2Ba特遣部队gydF4y2Ba是gydF4y2Ba假gydF4y2Ba。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个论点,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“LMS”gydF4y2Ba或gydF4y2BaRLS的gydF4y2Ba和gydF4y2BaTrainingFlagInputPortgydF4y2Ba财产gydF4y2Ba真正的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

调整权重国旗,指定为一个逻辑gydF4y2Ba1gydF4y2Ba(gydF4y2Ba真正的gydF4y2Ba)或gydF4y2Ba0gydF4y2Ba(gydF4y2Ba假gydF4y2Ba)。如果gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba是gydF4y2Ba真正的gydF4y2Ba调整权重,系统对象。如果gydF4y2Ba亚历山大-伍尔兹gydF4y2Ba是gydF4y2Ba假gydF4y2Ba,系统对象保持体重不变。gydF4y2Ba

依赖关系gydF4y2Ba

要启用这个论点,设置gydF4y2Ba算法gydF4y2Ba财产gydF4y2Ba“CMA”gydF4y2Ba和gydF4y2BaAdaptWeightsSourcegydF4y2Ba财产gydF4y2Ba输入端口的gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba逻辑gydF4y2Ba

输出参数gydF4y2Ba

全部展开gydF4y2Ba

平衡的符号,作为一个列向量返回相同的长度作为输入信号gydF4y2BaxgydF4y2Ba。gydF4y2Ba

误差信号,作为一个列向量返回相同的长度作为输入信号gydF4y2BaxgydF4y2Ba。gydF4y2Ba

利用权重,作为一个列向量,返回gydF4y2BaNumTapsgydF4y2Ba元素。gydF4y2Ba权重gydF4y2Ba包含利用权重更新上次丝锥重量。gydF4y2Ba

对象的功能gydF4y2Ba

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名gydF4y2BaobjgydF4y2Ba使用这个语法:gydF4y2Ba

发行版(obj)gydF4y2Ba

全部展开gydF4y2Ba

isLockedgydF4y2Ba 确定gydF4y2Ba系统对象gydF4y2Ba在使用gydF4y2Ba
克隆gydF4y2Ba 创建重复的gydF4y2Ba系统对象gydF4y2Ba
信息gydF4y2Ba 均衡器对象特征信息gydF4y2Ba
maxstepgydF4y2Ba 最大步长LMS均衡器收敛gydF4y2Ba
mmseweightsgydF4y2Ba 线性均衡器MMSE利用权重gydF4y2Ba
一步gydF4y2Ba 运行gydF4y2Ba系统对象gydF4y2Ba算法gydF4y2Ba
释放gydF4y2Ba 释放资源,并允许修改gydF4y2Ba系统对象gydF4y2Ba属性值和输入特征gydF4y2Ba
重置gydF4y2Ba 重置的内部状态gydF4y2Ba系统对象gydF4y2Ba

例子gydF4y2Ba

全部折叠gydF4y2Ba

创建一个BPSK调制器和一个均衡器™系统对象,指定LMS线性均衡器有八个水龙头和步长为0.03。gydF4y2Ba

bpsk = comm.BPSKModulator;eqlms = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba8gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.03);gydF4y2Ba

改变参考抽头均衡器的指数。gydF4y2Ba

eqlms。ReferenceTap = 4;

建立一组测试数据。通过卷积信号接收数据。gydF4y2Ba

x = bpsk (randi ([0, 1], 1000,1));rxsig = conv (x, [1 0.8 - 0.3]);gydF4y2Ba

使用gydF4y2BamaxstepgydF4y2Ba发现的最大允许的步长。gydF4y2Ba

mxStep = maxstep (eqlms rxsig)gydF4y2Ba
mxStep = 0.1384gydF4y2Ba

平衡收到信号。使用前200个符号作为训练序列。gydF4y2Ba

y = eqlms (rxsig x (1:200));gydF4y2Ba

应用线性均衡使用至少意味着广场(LMS)算法恢复QPSK符号通过路径AWGN信道。gydF4y2Ba

初始化模拟变量。gydF4y2Ba

M = 4;gydF4y2Ba%正交相移编码gydF4y2BanumSymbols = 10000;numTrainingSymbols = 1000;chtaps = [1 0.5 * exp(1 *π/ 6)0.1 * exp(1我*π/ 8)];gydF4y2Ba

生成QPSK-modulated符号。应用多路径信道过滤和AWGN障碍的符号。gydF4y2Ba

data =兰迪([0 m - 1] numSymbols 1);tx = pskmod(数据、Mπ/ 4);rx = awgn(过滤器(chtaps 1 tx), 25岁,gydF4y2Ba“测量”gydF4y2Ba);gydF4y2Ba

创建一个线性均衡器系统对象和显示的缺省配置。调整参考利用gydF4y2Ba1gydF4y2Ba。检查最大允许的步长。平衡受损的符号。gydF4y2Ba

情商= comm.LinearEqualizergydF4y2Ba
情商= comm.LinearEqualizer属性:算法:LMS的NumTaps: 5 StepSize: 0.0100星座:[0.7071 -0.7071 + 0.7071 + 0.7071我……]ReferenceTap: 3 InputDelay: 0 InputSamplesPerSymbol: 1 TrainingFlagInputPort:假AdaptAfterTraining:真正的InitialWeightsSource:“汽车”WeightUpdatePeriod: 1gydF4y2Ba
eq.ReferenceTap = 1;rx mxStep = maxstep (eq)gydF4y2Ba
mxStep = 0.3171gydF4y2Ba
(y,犯错,权重)= eq (rx, tx (1: numTrainingSymbols));gydF4y2Ba

情节受损的星座和平衡的符号。gydF4y2Ba

constell = comm.ConstellationDiagram (gydF4y2Ba“NumInputPorts”gydF4y2Ba2);constell (rx, y);gydF4y2Ba

情节均衡器误差信号,计算出误差向量大小(维生素)平衡的符号。gydF4y2Ba

情节(abs (err));网格gydF4y2Ba在gydF4y2Ba;包含(gydF4y2Ba“符号”gydF4y2Ba);ylabel (gydF4y2Ba“e | |”gydF4y2Ba);标题(gydF4y2Ba“平衡误差信号”gydF4y2Ba);gydF4y2Ba

图包含一个坐标轴对象。坐标轴对象与标题均衡器误差信号包含一个类型的对象。gydF4y2Ba

errevm = comm.EVM;维生素与= errevm (tx, y)gydF4y2Ba
维生素与= 11.7853gydF4y2Ba

绘制均衡器抽头权值。gydF4y2Ba

次要情节(1,1);阀杆(真实(权重));ylabel (gydF4y2Ba“真实的(重量)”gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴([0 6 -0.5 - 1]);标题(gydF4y2Ba均衡器抽头权值的gydF4y2Ba);次要情节(3、1、2);阀杆(图像放大(权重));ylabel (gydF4y2Ba的图像放大(权重)gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴([0 6 -0.5 - 1]);次要情节(3,1,3);阀杆(abs(权重));ylabel (gydF4y2Ba“abs(权重)”gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴([0 6 -0.5 - 1]);gydF4y2Ba

图包含3轴对象。坐标轴对象1标题均衡器抽头权值包含一个类型的对象。坐标轴对象2包含一个类型的对象。坐标轴对象3包含一个类型的对象。gydF4y2Ba

证明线性均衡使用至少意味着广场(LMS)算法恢复QPSK符号通过AWGN信道。应用不同的均衡器级培训计划并显示符号错误。gydF4y2Ba

系统设置gydF4y2Ba

模拟QPSK-modulated系统情况。传输数据包200训练符号和1800组成的随机数据符号。配置一个LMS线性均衡器恢复数据包数据。gydF4y2Ba

M = 4;numTrainSymbols = 200;numDataSymbols = 1800;信噪比= 20;trainingSymbols = pskmod (randi ([0 M - 1] numTrainSymbols 1), M,π/ 4);numPkts = 10;lineq = comm.LinearEqualizer (gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba5,gydF4y2Ba“ReferenceTap”gydF4y2Ba3,gydF4y2Ba“StepSize”gydF4y2Ba,0.01);gydF4y2Ba

训练均衡器在每个数据包的开始复位gydF4y2Ba

使用前缀训练符号在处理每一个数据包。处理每个数据包后,重置均衡器。这个重置迫使均衡器训练水龙头没有以前的知识。均衡器误差信号情节第一,第二,最后包显示更高的符号错误在每个数据包的开始。gydF4y2Ba

jj = 1;图gydF4y2Ba为gydF4y2Ba2 = 1:numPkts b =兰迪([0 m - 1] numDataSymbols 1);dataSym = pskmod (b、M,π/ 4);包= [trainingSymbols; dataSym];rx = awgn(包、信噪比);[~,犯错]= lineq (rx trainingSymbols);重置(lineq)gydF4y2Ba如果gydF4y2Ba(2 = = 1 | 2 | 2 = = | | 2 = = numPkts)次要情节(3、1,jj)情节(abs (err))标题([gydF4y2Ba“包#”gydF4y2Banum2str (ii)])包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)轴([0,长度(包),0,1])网格gydF4y2Ba在gydF4y2Ba;jj = jj + 1;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

图包含3轴对象。坐标轴对象与标题1 # 1包包含一个类型的对象。坐标轴对象与标题2 # 2包包含一个类型的对象。坐标轴对象与标题3 # 10包包含一个类型的对象。gydF4y2Ba

训练均衡器在每个数据包的开始没有重置gydF4y2Ba

处理每个数据包使用前缀训练符号。不处理每个数据包后重置均衡器。每个数据包后不重置,均衡器保留利用权重从培训前包。均衡器误差信号情节第一,第二,最后包显示初始培训第一数据包后,后续的数据包有更少的符号错误在每个数据包的开始。gydF4y2Ba

释放(lineq) jj = 1;图gydF4y2Ba为gydF4y2Ba2 = 1:numPkts b =兰迪([0 m - 1] numDataSymbols 1);dataSym = pskmod (b、M,π/ 4);包= [trainingSymbols; dataSym];频道= 1;rx = awgn(包*通道,信噪比);[~,犯错]= lineq (rx trainingSymbols);gydF4y2Ba如果gydF4y2Ba(2 = = 1 | 2 | 2 = = | | 2 = = numPkts)次要情节(3、1,jj)情节(abs (err))标题([gydF4y2Ba“包#”gydF4y2Banum2str (ii)])包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)轴([0,长度(包),0,1])网格gydF4y2Ba在gydF4y2Ba;jj = jj + 1;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

图包含3轴对象。坐标轴对象与标题1 # 1包包含一个类型的对象。坐标轴对象与标题2 # 2包包含一个类型的对象。坐标轴对象与标题3 # 10包包含一个类型的对象。gydF4y2Ba

定期训练均衡器gydF4y2Ba

系统与信号受时变通道需要周期性的均衡器训练保持锁定通道的变化。指定一个系统200年培训每1800数据符号的象征。培训、均衡器之间不会更新利用权重。均衡器过程每包200符号。gydF4y2Ba

Rs = 1 e6;fd = 20;spp = 200;gydF4y2Ba每个包的%符号gydF4y2Bab =兰迪([0 m - 1] numDataSymbols 1);dataSym = pskmod (b、M,π/ 4);包= [trainingSymbols;dataSym];流= repmat(包10 1);tx =(0:长度(流)1)/ Rs;频道= exp(1 * 2 *π* fd * tx);rx = awgn(流。*通道信噪比);gydF4y2Ba

设置gydF4y2BaAdaptAfterTraininggydF4y2Ba财产gydF4y2Ba假gydF4y2Ba停止均衡器抽头更新后的重量训练阶段。gydF4y2Ba

(lineq) lineq发布。AdaptAfterTraining=假gydF4y2Ba
lineq = comm.LinearEqualizer属性:算法:LMS的NumTaps: 5 StepSize: 0.0100星座:[0.7071 -0.7071 + 0.7071 + 0.7071我……]ReferenceTap: 3 InputDelay: 0 InputSamplesPerSymbol: 1 TrainingFlagInputPort:假AdaptAfterTraining:假InitialWeightsSource:“汽车”WeightUpdatePeriod: 1gydF4y2Ba

平衡数据受损。情节的角误差通道,均衡器误差信号,信号星座。随着信道的变化,均衡器的输出不移除通道的影响。输出星座旋转不同步,导致一些错误。gydF4y2Ba

[y,犯错]= lineq (rx trainingSymbols);图次要情节(2,1,1)情节(tx,打开(角(频道)))包含(gydF4y2Ba的时间(秒)gydF4y2Ba)ylabel (gydF4y2Ba“通道角(rad)”gydF4y2Ba)标题(gydF4y2Ba角误差随时间的gydF4y2Ba次要情节(2,1,2)情节(abs (err))包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba标题(gydF4y2Ba时变信道没有再培训的gydF4y2Ba)gydF4y2Ba

图包含2轴对象。坐标轴对象与标题1角误差随着时间的推移,包含一个类型的对象。坐标轴对象2标题时变信道没有培训包含一个类型的对象。gydF4y2Ba

散点图(y)gydF4y2Ba

图散点图包含一个坐标轴对象。标题为散点图的坐标轴对象包含一个类型的对象。这个对象表示通道1。gydF4y2Ba

设置gydF4y2BaTrainingInputPortgydF4y2Ba财产gydF4y2Ba真正的gydF4y2Ba配置均衡器对水龙头暗示时进行再培训gydF4y2BatrainFlaggydF4y2Ba输入。只有当均衡器的火车gydF4y2BatrainFlaggydF4y2Ba是gydF4y2Ba真正的gydF4y2Ba。每2000个符号后,均衡器通过水龙头和保持锁在通道的变化。情节的角误差通道,均衡器误差信号,信号星座。随着信道的变化,均衡器的输出删除信道的影响。输出星座不旋转的同步和减少错误。gydF4y2Ba

(lineq) lineq发布。TrainingFlagInputPort=真正的;symbolCnt = 0;numPackets = (rx) / spp长度;trainFlag = true;trainingPeriod = 2000;eVec = 0(大小(rx));yVec = 0(大小(rx));gydF4y2Ba为gydF4y2Bap = 1: numPackets [yVec ((p - 1) * spp + 1: p * spp, 1), eVec ((p - 1) * spp + 1: p * spp, 1)] =gydF4y2Ba…gydF4y2Balineq (rx ((p - 1) * spp + 1: p * spp, 1), trainingSymbols, trainFlag);symbolCnt = symbolCnt + spp;gydF4y2Ba如果gydF4y2BasymbolCnt > = trainingPeriod trainFlag = true;symbolCnt = 0;gydF4y2Ba其他的gydF4y2BatrainFlag = false;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba图次要情节(2,1,1)情节(tx,打开(角(频道)))包含(gydF4y2Ba“t (sec)”gydF4y2Ba)ylabel (gydF4y2Ba“通道角(rad)”gydF4y2Ba)标题(gydF4y2Ba角误差随时间的gydF4y2Ba次要情节(2,1,2)情节(abs (eVec))包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba标题(gydF4y2Ba时变信道与再培训的gydF4y2Ba)gydF4y2Ba

图包含2轴对象。坐标轴对象与标题1角误差随着时间的推移,包含一个类型的对象。轴与培训对象2标题时变信道包含一个类型的对象。gydF4y2Ba

散点图(yVec)gydF4y2Ba

图散点图包含一个坐标轴对象。标题为散点图的坐标轴对象包含一个类型的对象。这个对象表示通道1。gydF4y2Ba

模拟系统延迟之间的传播符号和收到样品。典型的发射机和接收机系统过滤器,导致延迟。这种延迟必须占同步系统。在这个例子中,系统介绍了延迟没有发送和接收滤波器。线性均衡,使用至少意味着广场(LMS)算法,恢复QPSK符号。gydF4y2Ba

初始化模拟变量。gydF4y2Ba

M = 4;gydF4y2Ba%正交相移编码gydF4y2BanumSymbols = 10000;numTrainingSymbols = 1000;mpChan = [1 0.5 * exp(1 *π/ 6)0.1 * exp(1我*π/ 8)];systemDelay = dsp.Delay (20);信噪比= 24;gydF4y2Ba

生成QPSK-modulated符号。应用多路径通道过滤、系统延迟和AWGN传播符号。gydF4y2Ba

data =兰迪([0 m - 1] numSymbols 1);tx = pskmod(数据、Mπ/ 4);gydF4y2Ba% OQPSKgydF4y2BadelayedSym = systemDelay(过滤器(mpChan 1 tx));rx = awgn (delayedSym,信噪比,gydF4y2Ba“测量”gydF4y2Ba);gydF4y2Ba

创建均衡器和维生素与系统对象。平衡系统对象指定一个线性均衡器使用LMS算法。gydF4y2Ba

lineq = comm.LinearEqualizer (gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba9gydF4y2Ba“ReferenceTap”gydF4y2Ba5);维生素与= comm.EVM (gydF4y2Ba“ReferenceSignalSource”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“估计从参考星座”gydF4y2Ba);gydF4y2Ba

平衡不调整输入延迟gydF4y2Ba

平衡了符号。gydF4y2Ba

[err1日元,wts1] = lineq (rx, tx (1: numTrainingSymbols, 1));gydF4y2Ba

找到之间的延迟收到了使用符号和传播符号gydF4y2BafinddelaygydF4y2Ba函数。gydF4y2Ba

rx rxDelay = finddelay (tx)gydF4y2Ba
rxDelay = 20gydF4y2Ba

显示均衡器信息。延迟的延迟值表示引入的均衡器。计算的总延迟的总和gydF4y2BarxDelaygydF4y2Ba和均衡器延迟。gydF4y2Ba

eqInfo = info (lineq)gydF4y2Ba
eqInfo =gydF4y2Ba结构体字段:gydF4y2Ba延迟:4gydF4y2Ba
totalDelay = rxDelay + eqInfo.Latency;gydF4y2Ba

直到均衡器输出收敛,符号错误率很高。情节错误输出,gydF4y2Baerr1gydF4y2Ba使相等时,确定输出是收敛的。gydF4y2Ba

情节(abs (err1))包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)标题(gydF4y2Ba“平衡误差信号”gydF4y2Ba)gydF4y2Ba

图包含一个坐标轴对象。坐标轴对象与标题均衡器误差信号包含一个类型的对象。gydF4y2Ba

情节显示超出1000符号培训期间过多的错误。当解调符号和计算符号错误,占unconverged输出和系统之间的时间间隔均衡器输出和传播符号,跳过第一个2000符号。gydF4y2Ba

dataRec1 = pskdemod(日元(2000 + totalDelay:结束),M,π/ 4);symErrWithDelay = symerr(数据(2000:end-totalDelay)、dataRec1)gydF4y2Ba
symErrWithDelay = 5999gydF4y2Ba
evmWithDelay =维生素(日元)gydF4y2Ba
evmWithDelay = 33.0110gydF4y2Ba

错误率和维生素都很高,因为接收延迟并不是占均衡器的系统对象。gydF4y2Ba

调整输入迟延均衡器gydF4y2Ba

平衡使用延迟接收的数据值来设置gydF4y2BaInputDelaygydF4y2Ba财产。因为gydF4y2BaInputDelaygydF4y2Ba你必须释放,nontunable属性吗gydF4y2BalineqgydF4y2Ba系统对象重新配置gydF4y2BaInputDelaygydF4y2Ba财产。平衡了符号。gydF4y2Ba

(lineq) lineq发布。InputDelay = rxDelaygydF4y2Ba
lineq = comm.LinearEqualizer属性:算法:LMS的NumTaps: 9 StepSize: 0.0100星座:[0.7071 -0.7071 + 0.7071 + 0.7071我……]ReferenceTap: 5 InputDelay: 20 InputSamplesPerSymbol: 1 TrainingFlagInputPort:假AdaptAfterTraining:真正的InitialWeightsSource:“汽车”WeightUpdatePeriod: 1gydF4y2Ba
[y2, err2, wts2] = lineq (rx, tx (1: numTrainingSymbols, 1));gydF4y2Ba

情节水龙头重量和平衡的误差大小。茎图显示了均衡器抽头权值前后系统延迟。二维线情节展示了延时信号均衡器收敛较慢,而信号的延迟删除。gydF4y2Ba

次要情节(2,1,1)干细胞([真正的(wts1), (wts2)])包含(gydF4y2Ba“龙头”gydF4y2Ba)ylabel (gydF4y2Ba利用实际重量的gydF4y2Ba)传说(gydF4y2Ba“rxDelayed”gydF4y2Ba,gydF4y2Ba“rxDelayRemoved”gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba次要情节(2,1,2)干细胞([图像放大(wts1),图像放大(wts2)])包含(gydF4y2Ba“龙头”gydF4y2Ba)ylabel (gydF4y2Ba“利用虚构的重量”gydF4y2Ba)传说(gydF4y2Ba“rxDelayed”gydF4y2Ba,gydF4y2Ba“rxDelayRemoved”gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba

图包含2轴对象。坐标轴对象1包含2杆类型的对象。这些对象代表rxDelayed rxDelayRemoved。坐标轴对象包含2杆类型的对象。这些对象代表rxDelayed rxDelayRemoved。gydF4y2Ba

图绘制([abs (err1), abs (err2)])包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)传说(gydF4y2Ba“rxDelayed”gydF4y2Ba,gydF4y2Ba“rxDelayRemoved”gydF4y2Ba网格)gydF4y2Ba在gydF4y2Ba

图包含一个坐标轴对象。坐标轴对象包含2线类型的对象。这些对象代表rxDelayed rxDelayRemoved。gydF4y2Ba

情节的错误输出平衡的信号,gydF4y2BarxDelayedgydF4y2Ba和gydF4y2BarxDelayRemovedgydF4y2Ba。对于信号的延迟删除,均衡器收敛培训期间在1000年的象征。当解调符号和计算符号错误,占unconverged输出和系统之间的时间间隔均衡器输出和传播符号,跳过第一个500符号。重新配置的均衡器占系统信号的延迟使更好的均衡,并减少错误和维生素与象征。gydF4y2Ba

eqInfo = info (lineq)gydF4y2Ba
eqInfo =gydF4y2Ba结构体字段:gydF4y2Ba延迟:4gydF4y2Ba
totalDelay = rxDelay + eqInfo.Latency;dataRec2 = pskdemod (y2 (500 + totalDelay:结束),M,π/ 4);symErrDelayRemoved = symerr(数据(500:end-totalDelay)、dataRec2)gydF4y2Ba
symErrDelayRemoved = 0gydF4y2Ba
evmDelayRemoved =维生素(y2 (500 + totalDelay:结束)gydF4y2Ba
evmDelayRemoved = 9.5660gydF4y2Ba

恢复QPSK符号与线性均衡器采用恒模算法(CMA)和EVM-based水龙头培训。当使用盲均衡器算法,如CMA、训练均衡器水龙头使用gydF4y2BaAdaptWeightsgydF4y2Ba属性来启动和停止训练。辅助函数用于生成情节和应用相位校正。gydF4y2Ba

初始化系统变量。gydF4y2Ba

rng (123456);M = 4;gydF4y2Ba%正交相移编码gydF4y2BanumSymbols = 100;numPackets = 5000;raylChan = comm.RayleighChannel (gydF4y2Ba…gydF4y2Ba“PathDelays”gydF4y2Ba[0,1],gydF4y2Ba…gydF4y2Ba“AveragePathGains”gydF4y2Ba-12年[0],gydF4y2Ba…gydF4y2Ba“MaximumDopplerShift”gydF4y2Ba1 e-5);信噪比= 50;adaptWeights = true;gydF4y2Ba

创建均衡器和维生素与系统对象。平衡系统对象指定一个线性均衡器采用CMA自适应算法。调用辅助函数来初始化图块。gydF4y2Ba

lineq = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“CMA”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba5,gydF4y2Ba…gydF4y2Ba“ReferenceTap”gydF4y2Ba3,gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.03,gydF4y2Ba…gydF4y2Ba“AdaptWeightsSource”gydF4y2Ba,gydF4y2Ba输入端口的gydF4y2Ba)gydF4y2Ba
lineq = comm.LinearEqualizer属性:算法:“CMA”NumTaps: 5 StepSize: 0.0300星座:[0.7071 -0.7071 + 0.7071 + 0.7071我……]ReferenceTap: 3 InputSamplesPerSymbol: 1 AdaptWeightsSource:“输入端口”InitialWeightsSource:“汽车”WeightUpdatePeriod: 1gydF4y2Ba
信息(lineq)gydF4y2Ba
ans =gydF4y2Ba结构体字段:gydF4y2Ba延迟时间:2gydF4y2Ba
维生素与= comm.EVM (gydF4y2Ba“ReferenceSignalSource”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“估计从参考星座”gydF4y2Ba);[errPlot, evmPlot scatSym adaptState] =gydF4y2Ba…gydF4y2BainitFigures (numPackets lineq);gydF4y2Ba

均衡回路gydF4y2Ba

实现均衡回路:gydF4y2Ba

  1. 产生相移键控数据包。gydF4y2Ba

  2. 应用瑞利衰落和AWGN来传输数据。gydF4y2Ba

  3. 应用均衡接收的数据和相位校正均衡器的输出。gydF4y2Ba

  4. 估计维生素和切换gydF4y2BaadaptWeightsgydF4y2Ba旗帜gydF4y2Ba真正的gydF4y2Ba或gydF4y2Ba假gydF4y2Ba基于维生素水平。gydF4y2Ba

  5. 更新图块。gydF4y2Ba

为gydF4y2Bap = 1: numPackets data =兰迪([0 m - 1] numSymbols 1);tx = pskmod(数据、Mπ/ 4);rx = awgn (raylChan (tx),信噪比);rxDelay = finddelay (rx, tx);[y,犯错,但是]= lineq (rx adaptWeights);y = phaseCorrection (y);维生素与挣值管理=都(y);adaptWeights =(维生素> 20);updateFigures (errPlot evmPlot、scatSym adaptState,gydF4y2Ba…gydF4y2Ba出世,y(结束)、维生素p, numPackets adaptWeights)gydF4y2Ba结束gydF4y2Ba

图包含4轴对象。坐标轴对象1标题利用重量大小包含一个干细胞类型的对象。坐标轴对象2标题散点图包含一个类型的对象。坐标轴对象3标题调整重量信号包含一个类型的对象。挣值管理坐标轴对象4标题都包含一个类型的对象。gydF4y2Ba

rxDelaygydF4y2Ba
rxDelay = 0gydF4y2Ba

图块显示,维生素与变化,均衡器切换的decision-directed重量适应模式。gydF4y2Ba

辅助函数gydF4y2Ba

这个helper函数初始化数据显示四块仿真结果。gydF4y2Ba

函数gydF4y2Ba[errPlot evmPlot,散射,adaptState] =gydF4y2Ba…gydF4y2BainitFigures (numPkts lineq) yVec =南(numPkts, 1);evmVec =南(numPkts, 1);wVec = 0 (lineq.NumTaps, 1);adaptVec =南(numPkts, 1);图次要情节(2 2 1)evmPlot =茎(wVec);网格gydF4y2Ba在gydF4y2Ba;轴([1 lineq。NumTaps01。8]) xlabel(“龙头”gydF4y2Ba);ylabel (gydF4y2Ba“| |权重”gydF4y2Ba);标题(gydF4y2Ba利用重量大小的gydF4y2Ba次要情节(2,2,2)散射=情节(yVec,gydF4y2Ba“。”gydF4y2Ba);轴gydF4y2Ba广场gydF4y2Ba;轴([-1.2 1.2 -1.2 1.2]);网格gydF4y2Ba在gydF4y2Ba包含(gydF4y2Ba“同步”gydF4y2Ba);ylabel (gydF4y2Ba“交”gydF4y2Ba);标题(gydF4y2Ba“散点图”gydF4y2Ba);次要情节(2,2,3)adaptState =情节(adaptVec);网格gydF4y2Ba在gydF4y2Ba;轴([0 numPkts -0.2 - 1.2]) ylabel (gydF4y2Ba“培训”gydF4y2Ba);包含(gydF4y2Ba“符号”gydF4y2Ba);标题(gydF4y2Ba“适应重量信号”gydF4y2Ba次要情节(2,2,4)errPlot =情节(evmVec);网格gydF4y2Ba在gydF4y2Ba;轴([1 numPkts 0 100])包含(gydF4y2Ba“符号”gydF4y2Ba);ylabel (gydF4y2Ba'维生素(%)'gydF4y2Ba);标题(gydF4y2Ba“维生素”gydF4y2Ba)gydF4y2Ba结束gydF4y2Ba

这个helper函数更新数据。gydF4y2Ba

函数gydF4y2BaupdateFigures (errPlot evmPlot scatSym,gydF4y2Ba…gydF4y2BaadaptWts adaptState, w, y,维生素,p, numFrames)gydF4y2Ba持续的gydF4y2BayVec evmVec adaptVecgydF4y2Ba如果gydF4y2Bap = = 1 yVec =南(numFrames, 1);evmVec =南(numFrames, 1);adaptVec =南(numFrames, 1);gydF4y2Ba结束gydF4y2BayVec (p) = y;evmVec (p) =维生素;adaptVec (p) = adaptWts;errPlot。YData = abs (evmVec);evmPlot。YData = abs (w);scatSym。XData =实际(yVec);scatSym。YData = imag(yVec); adaptState.YData = adaptVec; drawnowlimitrategydF4y2Ba结束gydF4y2Ba

这个helper函数适用于相位校正。gydF4y2Ba

函数gydF4y2Bay = phaseCorrection (y) =角(y((真正的(y) > 0) &(图像放大(y) > 0)));(< 0.1)=(< 0.1)+π/ 2;θ=意味着(一)-π/ 4;y = y * exp(1 *θ);gydF4y2Ba结束gydF4y2Ba

恢复QPSK符号与线性均衡器衰落环境中,使用至少意味着广场(LMS)算法。使用gydF4y2Ba重置gydF4y2Ba目标函数平衡独立包。使用辅助函数生成的情节。这个示例还显示之平衡处理和不定位处理。gydF4y2Ba

设置gydF4y2Ba

初始化系统变量,创建一个均衡器系统对象,并初始化情节人物。gydF4y2Ba

M = 4;gydF4y2Ba%正交相移编码gydF4y2BanumSym = 1000;numTrainingSym = 100;numPackets = 5;numTaps = 9;ttlNumSym = numSym + numTrainingSym;raylChan = comm.RayleighChannel (gydF4y2Ba…gydF4y2Ba“PathDelays”gydF4y2Ba[0,1],gydF4y2Ba…gydF4y2Ba“AveragePathGains”gydF4y2Ba[0 9],gydF4y2Ba…gydF4y2Ba“MaximumDopplerShift”gydF4y2Ba0,gydF4y2Ba…gydF4y2Ba“PathGainsOutputPort”gydF4y2Ba,真正的);信噪比= 35;rxVec = 0 (ttlNumSym numPackets);txVec = 0 (ttlNumSym numPackets);yVec = 0 (ttlNumSym, 1);eVec = 0 (ttlNumSym, 1);lineq1 = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2BanumTaps,gydF4y2Ba…gydF4y2Ba“ReferenceTap”gydF4y2Ba5,gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.01,gydF4y2Ba…gydF4y2Ba“TrainingFlagInputPort”gydF4y2Ba,真正的);[errPlot, wStem hStem scatPlot] = initFigures (ttlNumSym lineq1,gydF4y2Ba…gydF4y2BaraylChan.AveragePathGains);gydF4y2Ba

之平衡处理gydF4y2Ba

对于之平衡处理,在均衡器的输入提供一个符号。重置均衡器处理每个数据包后状态和通道。gydF4y2Ba

为gydF4y2Bap = 1: numPackets trainingFlag = true;gydF4y2Ba为gydF4y2Baq = 1: ttlNumSym data =兰迪([0 m - 1, 1, 1);tx = pskmod(数据、Mπ/ 4);(xc、pg) = raylChan (tx);rx = awgn (xc、25);[y,犯错,但是]= lineq1 (rx, tx trainingFlag);gydF4y2Ba

禁用培训处理后gydF4y2BanumTrainingSymgydF4y2Ba训练符号。gydF4y2Ba

如果gydF4y2Baq = = numTrainingSym trainingFlag = false;gydF4y2Ba结束gydF4y2BaupdateFigures (errPlot wStem、hStem scatPlot,呃,gydF4y2Ba…gydF4y2Ba出世,y, pg q ttlNumSym);txVec (q, p) = tx;rxVec (q, p) =处方;gydF4y2Ba结束gydF4y2Ba

处理每个数据包后,通道系统对象重置为得到一个新的通道水龙头和均衡器的实现系统对象恢复默认设置权重。gydF4y2Ba

重置(raylChan)重置(lineq1)gydF4y2Ba结束gydF4y2Ba

图包含4轴对象。坐标轴对象1标题利用重量大小包含一个干细胞类型的对象。坐标轴对象与标题2通道路径增益级包含一个干细胞类型的对象。轴3级标题错误对象包含一个类型的对象。坐标轴对象4标题散点图包含一个类型的对象。gydF4y2Ba

分组处理gydF4y2Ba

对于基于分组处理,提供一个包在均衡器的输入。每个包包含gydF4y2BattlNumSymgydF4y2Ba符号。因为培训时间小于包长度,您不需要指定开始训练的输入。gydF4y2Ba

yVecPkt = 0 (ttlNumSym numPackets);errVecPkt = 0 (ttlNumSym numPackets);wgtVecPkt = 0 (numTaps numPackets);lineq2 = comm.LinearEqualizer (gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba9gydF4y2Ba“ReferenceTap”gydF4y2Ba6gydF4y2Ba“StepSize”gydF4y2Ba,0.01);gydF4y2Ba为gydF4y2Bap = 1: numPackets [yVecPkt (: p), errVecPkt (: p), wgtVecPkt (: p) =gydF4y2Ba…gydF4y2Balineq2 (rxVec (: p), txVec (1: numTrainingSym, p));gydF4y2Ba为gydF4y2Baq = 1: ttlNumSym updateFigures (errPlot、wStem hStem, scatPlot,gydF4y2Ba…gydF4y2BaerrVecPkt (q, p), wgtVecPkt (: p),gydF4y2Ba…gydF4y2BayVecPkt (q, p), pg, q, ttlNumSym);gydF4y2Ba结束gydF4y2Ba

处理每个数据包后,通道系统对象重置为得到一个新的通道水龙头和均衡器的实现系统对象恢复默认设置权重。gydF4y2Ba

重置(raylChan)重置(lineq2)gydF4y2Ba结束gydF4y2Ba

图包含4轴对象。坐标轴对象1标题利用重量大小包含一个干细胞类型的对象。坐标轴对象与标题2通道路径增益级包含一个干细胞类型的对象。轴3级标题错误对象包含一个类型的对象。坐标轴对象4标题散点图包含一个类型的对象。gydF4y2Ba

辅助函数gydF4y2Ba

初始化数据的辅助函数。gydF4y2Ba

函数gydF4y2Ba[errPlot, wStem hStem scatPlot] =gydF4y2Ba…gydF4y2BainitFigures (ttlNumSym lineq, pg) yVec =南(ttlNumSym, 1);eVec =南(ttlNumSym, 1);wVec = 0 (lineq.NumTaps, 1);图;次要情节(2 2 1);wStem =茎(wVec);轴([1 lineq。NumTaps01。8]); grid在gydF4y2Ba;包含(gydF4y2Ba“龙头”gydF4y2Ba);ylabel (gydF4y2Ba“| |权重”gydF4y2Ba);标题(gydF4y2Ba利用重量大小的gydF4y2Ba);次要情节(2,2,2);hStem =茎([0 abs (pg) 0]);网格gydF4y2Ba在gydF4y2Ba;包含(gydF4y2Ba“龙头”gydF4y2Ba);ylabel (gydF4y2Ba“获得| |路径”gydF4y2Ba);标题(gydF4y2Ba“通道路径增益级”gydF4y2Ba);次要情节(2、2、3);errPlot =情节(eVec);轴([1 ttlNumSym 0 1.2]);网格gydF4y2Ba在gydF4y2Ba;包含(gydF4y2Ba“符号”gydF4y2Ba);ylabel (gydF4y2Ba“| |级错误”gydF4y2Ba);标题(gydF4y2Ba的误差大小gydF4y2Ba);次要情节(2、2、4);scatPlot =情节(yVec,gydF4y2Ba“。”gydF4y2Ba);轴gydF4y2Ba广场gydF4y2Ba;轴([-1.2 1.2 -1.2 1.2]);网格gydF4y2Ba在gydF4y2Ba;包含(gydF4y2Ba“同步”gydF4y2Ba);ylabel (gydF4y2Ba“交”gydF4y2Ba);标题(sprintf (gydF4y2Ba“散点图”gydF4y2Ba));gydF4y2Ba结束gydF4y2Ba

这个helper函数更新数据。gydF4y2Ba

函数gydF4y2BaupdateFigures (errPlot wStem、hStem scatPlot,gydF4y2Ba…gydF4y2Ba呃,出世,y, pg, p, ttlNumSym)gydF4y2Ba持续的gydF4y2BayVec eVecgydF4y2Ba如果gydF4y2Bap = = 1 yVec =南(ttlNumSym, 1);eVec =南(ttlNumSym, 1);gydF4y2Ba结束gydF4y2BayVec (p) = y;eVec (p) = abs (err);errPlot。YData = abs (eVec);wStem。YData = abs (wts);hStem。YData = (abs (pg) 0);scatPlot。XData =实际(yVec); scatPlot.YData = imag(yVec); drawnowlimitrategydF4y2Ba结束gydF4y2Ba

用线性均衡器在非适应模式。使用gydF4y2BammseweightsgydF4y2Ba计算目标函数的最小均方误差(MMSE)解决方案和使用返回的权重作为组利用权重线性均衡器。gydF4y2Ba

初始化模拟变量。gydF4y2Ba

M = 4;gydF4y2Ba%正交相移编码gydF4y2BanumSymbols = 10000;numTrainingSymbols = 1000;chtaps = [1 0.5 * exp(1 *π/ 6)0.1 * exp(1我*π/ 8)];EbN0 = 20;gydF4y2Ba

生成QPSK调制符号。申请延迟多路径信道过滤和AWGN障碍的符号。gydF4y2Ba

data =兰迪([0 m - 1] numSymbols 1);tx = pskmod(数据、Mπ/ 4);rx = awgn(过滤器(chtaps 1 tx), 25岁,gydF4y2Ba“测量”gydF4y2Ba);gydF4y2Ba

创建一个线性均衡器系统对象配置为使用CMA算法,设置gydF4y2BaAdaptWeightsgydF4y2Ba财产gydF4y2Ba假gydF4y2Ba,gydF4y2BaInitialWeightsSourcegydF4y2Ba财产gydF4y2Ba财产gydF4y2Ba。计算患者的体重。设置初始利用MMSE权重计算权重。平衡受损的符号。gydF4y2Ba

情商= comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“CMA”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“AdaptWeights”gydF4y2Ba假的,gydF4y2Ba…gydF4y2Ba“InitialWeightsSource”gydF4y2Ba,gydF4y2Ba“属性”gydF4y2Ba)gydF4y2Ba
情商= comm.LinearEqualizer属性:算法:“CMA”NumTaps: 5 StepSize: 0.0100星座:[0.7071 -0.7071 + 0.7071 + 0.7071我……]InputSamplesPerSymbol: 1 AdaptWeightsSource:“财产”AdaptWeights:假InitialWeightsSource:“财产”InitialWeights: x1双[5]WeightUpdatePeriod: 1gydF4y2Ba
重量= mmseweights (eq、chtaps EbN0)gydF4y2Ba
重量=gydF4y2Ba5×1复杂gydF4y2Ba0.0005 - 0.0068我0.0103 + 0.0117 0.9694 - 0.0019 -0.3987 + 0.2186我0.0389 - 0.1756gydF4y2Ba
eq.InitialWeights =重量;[y,犯错,重量]= eq (rx);gydF4y2Ba

情节的受损和平衡的符号。gydF4y2Ba

constell = comm.ConstellationDiagram (gydF4y2Ba“NumInputPorts”gydF4y2Ba2);constell (rx, y);gydF4y2Ba

情节均衡器误差信号,计算出误差向量的大小相等符号。gydF4y2Ba

情节(abs (err));网格gydF4y2Ba在gydF4y2Ba;包含(gydF4y2Ba“符号”gydF4y2Ba);ylabel (gydF4y2Ba“e | |”gydF4y2Ba);gydF4y2Ba

图包含一个坐标轴对象。坐标轴对象包含一个类型的对象。gydF4y2Ba

errevm = comm.EVM;维生素与= errevm (tx, y)gydF4y2Ba
维生素与= 139.1636gydF4y2Ba

情节均衡器抽头权值。gydF4y2Ba

次要情节(1,1);阀杆(真实(权重));ylabel (gydF4y2Ba“真实的(重量)”gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴(8 -0.5 - 1 [1]);线((eq.NumTaps eq.NumTaps + 0.5 + 0.5), (-0.5 - 1),gydF4y2Ba…gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“r”gydF4y2Ba,gydF4y2Ba“线宽”gydF4y2Ba1);标题(gydF4y2Ba均衡器抽头权值的gydF4y2Ba);次要情节(3、1、2);阀杆(图像放大(权重));ylabel (gydF4y2Ba的图像放大(权重)gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴(8 -0.5 - 1 [1]);线((eq.NumTaps eq.NumTaps + 0.5 + 0.5), (-0.5 - 1),gydF4y2Ba…gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“r”gydF4y2Ba,gydF4y2Ba“线宽”gydF4y2Ba1);次要情节(3,1,3);阀杆(abs(权重));ylabel (gydF4y2Ba“abs(权重)”gydF4y2Ba);包含(gydF4y2Ba“龙头”gydF4y2Ba);网格gydF4y2Ba在gydF4y2Ba;轴(8 -0.5 - 1 [1]);线((eq.NumTaps eq.NumTaps + 0.5 + 0.5)gydF4y2Ba…gydF4y2Ba(-0.5 - 1),gydF4y2Ba“颜色”gydF4y2Ba,gydF4y2Ba“r”gydF4y2Ba,gydF4y2Ba“线宽”gydF4y2Ba1);gydF4y2Ba

图包含3轴对象。坐标轴对象1标题均衡器抽头权值包含2杆类型的对象,线。轴2包含2杆类型的对象,对象。轴3包含2杆类型的对象,对象。gydF4y2Ba

证明线性均衡使用至少意味着广场(LMS)算法恢复QPSK符号通过AWGN信道。过程信号取样。gydF4y2Ba

系统设置gydF4y2Ba

模拟QPSK-modulated系统情况。传输数据包200训练符号和1800组成的随机数据符号。配置一个LMS线性均衡器恢复数据包数据。gydF4y2Ba

M = 4;numTrainSymbols = 200;numDataSymbols = 1800;信噪比= 20;trainingSymbols =gydF4y2Ba…gydF4y2Bapskmod (randi ([0 M - 1] numTrainSymbols 1), M,π/ 4);numPkts = 10;lineq = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba5,gydF4y2Ba…gydF4y2Ba“ReferenceTap”gydF4y2Ba3,gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.01,gydF4y2Ba…gydF4y2Ba“TrainingFlagInputPort”gydF4y2Ba,真正的);gydF4y2Ba

主循环gydF4y2Ba

使用前缀训练符号在处理每一个数据包。处理每个数据包后,重置均衡器。这个重置迫使均衡器训练水龙头没有以前的知识。平衡收到信号取样。对于每个包,使用前200个符号进行训练。gydF4y2Ba

subPlotCnt = 1;图gydF4y2Ba为gydF4y2Ba2 = 1:numPkts b =兰迪([0 m - 1] numDataSymbols 1);dataSym = pskmod (b、M,π/ 4);包= [trainingSymbols; dataSym];rx = awgn(包、信噪比);y = 0 (numDataSymbols + numTrainSymbols, 1);呃= 0 (numDataSymbols + numTrainSymbols, 1);gydF4y2Ba为gydF4y2Bajj = 1: numDataSymbols + numTrainSymbolsgydF4y2Ba如果gydF4y2Bajj < = numTrainSymbols [y (jj),犯错(jj)] =gydF4y2Ba…gydF4y2Balineq (rx (jj) trainingSymbols (jj),真的);gydF4y2Ba其他的gydF4y2Ba[y (jj),犯错(jj)] = lineq (rx (jj), 1我,假);gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba重置(lineq)gydF4y2Ba如果gydF4y2Ba(2 = = 1 | 2 | 2 = = | | 2 = = numPkts)次要情节(3 1 subPlotCnt)情节(abs (err))标题([gydF4y2Ba“包#”gydF4y2Banum2str (ii)])包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)轴([0,长度(包),0,1])网格gydF4y2Ba在gydF4y2Ba;subPlotCnt = subPlotCnt + 1;gydF4y2Ba结束gydF4y2Ba结束gydF4y2Ba

图包含3轴对象。坐标轴对象与标题1 # 1包包含一个类型的对象。坐标轴对象与标题2 # 2包包含一个类型的对象。坐标轴对象与标题3 # 10包包含一个类型的对象。gydF4y2Ba

证明线性均衡使用至少意味着广场(LMS)算法恢复QPSK符号通过AWGN信道。处理一个包,在多个经过训练符号开始。比较结果均衡处理完整的包在一个通过。gydF4y2Ba

系统设置gydF4y2Ba

模拟QPSK-modulated系统情况。传输数据包200训练符号和1800组成的随机数据符号。配置一个LMS线性均衡器恢复数据包数据。gydF4y2Ba

M = 4;numTrainSymbols = 200;numDataSymbols = 1800;信噪比= 20;trainingSymbols =gydF4y2Ba…gydF4y2Bapskmod (randi ([0 M - 1] numTrainSymbols 1), M,π/ 4);b =兰迪([0 m - 1] numDataSymbols 1);dataSym = pskmod (b、M,π/ 4);包= [trainingSymbols; dataSym];rx = awgn(包、信噪比);lineq = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba5,gydF4y2Ba…gydF4y2Ba“ReferenceTap”gydF4y2Ba3,gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.01);gydF4y2Ba

包在一个传递过程gydF4y2Ba

使用前缀训练符号在处理每一个数据包。处理每个数据包后,重置均衡器。这个重置迫使均衡器训练水龙头没有以前的知识。平衡收到信号取样。对于每个包,使用前200个符号进行训练。gydF4y2Ba

subPlotCnt = 1;图(err1日元)= lineq (rx trainingSymbols);重置(lineq)情节(abs (err1))标题(gydF4y2Ba“单通道处理”gydF4y2Ba)包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)轴([0,长度(包),0,1])网格gydF4y2Ba在gydF4y2Ba;gydF4y2Ba

图包含一个坐标轴对象。坐标轴标题单通道处理对象包含一个类型的对象。gydF4y2Ba

过程在多个传递数据包gydF4y2Ba

使用前缀训练符号在处理每一个数据包。处理每个数据包后,重置均衡器。这个重置迫使均衡器训练水龙头没有以前的知识。平衡收到信号取样。对于每个包,使用前200个符号进行训练。gydF4y2Ba

lineq = comm.LinearEqualizer (gydF4y2Ba…gydF4y2Ba“算法”gydF4y2Ba,gydF4y2Ba“LMS”gydF4y2Ba,gydF4y2Ba…gydF4y2Ba“NumTaps”gydF4y2Ba5,gydF4y2Ba…gydF4y2Ba“ReferenceTap”gydF4y2Ba3,gydF4y2Ba…gydF4y2Ba“StepSize”gydF4y2Ba,0.01,gydF4y2Ba…gydF4y2Ba“TrainingFlagInputPort”gydF4y2Ba,真正的);frameLen = 100;numFrames = (numDataSymbols + numTrainSymbols) / frameLen;图y2 = 0 (numDataSymbols + numTrainSymbols, 1);err2 = 0 (numDataSymbols + numTrainSymbols, 1);idx = 1: frameLen;symbolCnt = 0;gydF4y2Ba为gydF4y2Bajj = 1: numFramesgydF4y2Ba如果gydF4y2BasymbolCnt < numTrainSymbols (y2 (idx) err2 (idx)] =gydF4y2Ba…gydF4y2Balineq (rx (idx) trainingSymbols (idx),真的);gydF4y2Ba其他的gydF4y2Ba(y2 (idx) err2 (idx)] =gydF4y2Ba…gydF4y2Balineq (rx (idx), 1我*的(frameLen, 1),假);gydF4y2Ba结束gydF4y2Baidx = idx + frameLen;symbolCnt = symbolCnt + frameLen;gydF4y2Ba结束gydF4y2Ba重置(lineq)情节(abs (err2))标题(gydF4y2Ba“多通道处理”gydF4y2Ba)包含(gydF4y2Ba“符号”gydF4y2Ba)ylabel (gydF4y2Ba的误差大小gydF4y2Ba)轴([0,长度(包),0,1])网格gydF4y2Ba在gydF4y2Ba;gydF4y2Ba

图包含一个坐标轴对象。坐标轴标题多通道处理对象包含一个类型的对象。gydF4y2Ba

结果使用单通道和多通道的方法从均衡匹配。gydF4y2Ba

outputsEqual = isequal (y1, y2)gydF4y2Ba
outputsEqual =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba
errorsEqual = isequal (err1 err2)gydF4y2Ba
errorsEqual =gydF4y2Ba逻辑gydF4y2Ba1gydF4y2Ba

更多关于gydF4y2Ba

全部展开gydF4y2Ba

算法gydF4y2Ba

全部展开gydF4y2Ba

扩展功能gydF4y2Ba

C / c++代码生成gydF4y2Ba
生成C和c++代码使用MATLAB®编码器™。gydF4y2Ba

版本历史gydF4y2Ba

介绍了R2019agydF4y2Ba

另请参阅gydF4y2Ba

对象gydF4y2Ba

块gydF4y2Ba