MLSE均衡器
最大似然序列估计(MLSE)均衡器提供了传播信道特性中时间变化的最佳均衡。然而,MLSE均衡器有时不那么吸引人,因为它们的计算复杂性高于自适应均衡器.
在通信工具箱™中,mlseeq
函数,comm.MLSEEqualizer
系统对象™和MLSE均衡器块使用维特比算法通过色散信道均衡线性调制信号。这些特征通过使用信道估计作为有限输入响应(FIR)滤波器来输出信号的最大似然序列估计。
为了解码接收到的信号,MLSE均衡器:
对输入信号中的符号应用FIR滤波器。FIR滤波器抽头权值与信道估计相对应。
使用Viterbi算法计算回溯路径和状态度量。这些值在维特比算法的每一步都被分配给符号。度量是基于欧几里得距离的。
将信号的最大似然序列估计输出为与调制信号的星座点对应的复数序列。
MLSE均衡器产生了理论上最好的性能,但是计算量很大。
有关MLSE均衡器的背景资料,请参阅均衡器的选择参考.
平衡一个矢量信号MATLAB
您可以使用mlseeq
函数或comm.MLSEEqualizer
MATLAB中MLSE均衡的系统对象®.本节中的示例调用mlseeq
函数。类时应用类似的工作流comm.MLSEEqualizer
系统对象。有关使用System对象的示例,请参见comm.MLSEEqualizer
系统对象引用页。
的mlseeq
功能有两种操作模式:
连续操作模式使您能够通过重复调用来处理一系列向量
mlseeq
.该函数保存从一次调用到下一次调用的内部状态信息。要了解更多信息,请参见连续运行模式下的平衡.重置操作模式使您能够指定数据的前置语和后置语。要了解更多信息,请参见使用前文或后文.
如果不处理一系列向量,也不需要指定前导符或后置符,则操作模式几乎相同。它们的不同之处在于连续操作模式会引起延迟,而复位操作模式不会。下面以reset操作模式为例。如果将示例修改为使用连续操作模式运行,则均衡输出中将出现延迟。要详细了解此延迟,请参见连续操作模式下的延迟.
使用mlseeq来均衡一个矢量信号
最简单的形式是mlseeq
函数均衡调制数据的矢量,当您指定:
信道的估计系数(建模为FIR滤波器)。
调制类型的信号星座。
维特比算法回溯深度。较大的回溯深度值可以改善均衡器的结果,但会增加计算时间。
生成一个PSK调制信号,调制顺序设置为4。
M = 4;msg = pskmod([1 2 2 0 3 1 3 3 2 1 0 2 3 0 1]',M);
通过失真信道对调制信号进行滤波。
Chcoeffs = [.986;.845;.237;.12345 + .31i];Filtmsg = filter(chcoeffs,1,msg);
为MLSE均衡器定义参考星座、回溯长度和信道估计。在本例中,提供了确切的信道作为信道估计。
const = pskmod([0:M-1],M);Tblen = 10;Chanest = chcoeffs;
均衡接收信号。
msgEq = mlseeq(filtmsg,chanest,const,tblen,“rst”);msgEq isequal(味精)
ans =逻辑1
连续工作模式下的信号均衡
如果数据被划分为一系列向量(例如,在循环中处理),则连续操作模式是使用mlseeq
函数。在连续运行模式下,mlseeq
可以保存其内部状态信息以供后续调用使用,并且可以使用先前存储的状态信息进行初始化。调用时选择连续操作模式mlseeq
,指定“合同”
作为输入参数。
请注意
连续操作模式会产生延迟,如中所述连续操作模式下的延迟.此模式不能容纳前置语或后置语。
连续运行模式的操作步骤
当在循环中使用连续操作模式时,在均衡循环开始之前,预先分配三个空矩阵变量来存储均衡器的状态度量、回溯状态和回溯输入。在循环内部,调用mlseeq
使用如下语法:
Sm = [];Ts = [];Ti = [];为…[y,sm,ts,ti] = mlseeq(x,chcoeffs,const,tblen,“合同”nsamp sm, ts, ti);…结束
使用sm
,ts
,“透明国际”
作为输入参数mlseeq
从它在上一个迭代中完成的地方继续操作。使用sm
,ts
,“透明国际”
输出参数导致mlseeq
在当前迭代结束时更新状态信息。在第一次迭代中,sm
,ts
,“透明国际”
开始时为空矩阵,因此第一次调用mlseeq
函数将所有状态的度量值初始化为0。
连续操作模式下的延迟
连续操作模式,回溯深度为tblen
的输出延迟tblen
符号。第一个tblen
输出符号与输入信号和最后一个无关tblen
输入符号与输出信号无关。例如,此命令使用的回溯深度为3.
.的前三个输出符号与的输入信号无关(10)
.
Y = mlseeq(ones(1,10),1,[-7:2:7],3,“合同”)
Y = -7 -7 -7 1 1 1 1 1 1 1 1
跟踪由通信系统的不同部分引起的延迟是很重要的。的使用mlseeq在连续操作模式下平衡一个向量示例说明在计算错误率时如何考虑延迟。
使用mlseeq在连续操作模式下平衡一个向量
对象的连续操作模式的使用过程mlseeq
循环中的函数。
初始化变量
指定运行时变量。
Numsym = 200;%每次迭代中的符号数Numiter = 25;迭代次数%M = 4;%采用4-PSK调制qpskMod = com . qpskmodulator (“PhaseOffset”, 0);Chcoeffs = [1;0.25);%通道系数Chanest = chcoeffs;%渠道估计
要初始化均衡器,需要为参考星座、回溯长度、每个符号的样本数量和状态变量定义参数sm
,ts
,“透明国际”
.
const = qpskMod((0:M-1)');Tblen = 10;Nsamp = 1;Sm = [];Ts = [];Ti = [];
定义变量以积累循环每次迭代的结果。
Fullmodmsg = [];Fullfiltmsg = [];Fullrx = [];
用循环模拟系统
在生成随机数据的循环中运行模拟,使用基带PSK调制对数据进行调制,并对数据进行过滤。的mlseeq
函数对过滤后的数据进行均衡。该循环还更新了每次循环迭代积累结果的变量。
为jj = 1:numiter msg = randi([0 M-1],numsym,1);%随机信号向量modmsg = qpskMod(msg);% psk调制信号Filtmsg = filter(chcoeffs,1,modmsg);%滤波信号平衡信号。[rx,sm,ts,ti] = mlseeq(filtmsg,chanest,const,…tblen,“合同”nsamp sm, ts, ti);用累积结果更新向量。Fullmodmsg = [Fullmodmsg;modmsg];Fullfiltmsg = [Fullfiltmsg;filtmsg];Fullrx = [Fullrx;rx);结束
计算错误率和绘制结果
从循环的所有迭代中计算符号错误率。的symerr
函数比较接收和发送信号的选定部分,而不是整个信号。由于连续操作模式会产生延迟,其在样本中的长度为回溯深度(tblen
)的均衡器,排除第一个tblen
从接收到的信号和最后的样本tblen
来自发射信号的样本。排除代表均衡器延迟的样本,确保符号错误率计算比较来自接收和传输信号的样本,这些样本是有意义的并且真正相互对应。
考虑到延迟,计算符号错误的总数。
hErrorCalc = com . errorrate (“ReceiveDelay”10);err = step(hErrorCalc, fullmodmsg, fullrx);Numsymerrs = err(1)
Numsymerrs = 0
绘制均衡前后的信号星座。均衡信号中的点与4-PSK的理想信号星座的点重合。
H = scatterplot(fullfiltmsg);持有在;散点图(fullrx 1 0,的r *、h);传奇(“均衡前滤波信号”,“平衡的信号”,…“位置”,“NorthOutside”);持有从;
使用前言或后文
有些系统在一组数据的开头或结尾包含一系列已知符号。开头或结尾的已知序列称为a序言或后同步信号,分别。的mlseeq
函数可以容纳已经包含在其输入信号中的前置和后置。调用该函数时,将前导符和后导符指定为整数向量,通过索引到信号星座向量来表示已知符号的序列。例如,的前导向量[1 4 4]
的4-PSK信号星座[1 j -1 -j]
表示调制信号以[1 -j]
.
如果您的系统使用无后置符号的前置符号,请使用后置符号向量[]
当调用mlseeq
.如果您的系统使用无序文的后序,则使用序文向量[]
.
恢复含有前言的消息
恢复包含序文的消息,均衡信号,并检查符号错误率。
指定调制顺序、均衡器回溯深度、每个符号的采样数量、序文和消息长度。
M = 4;Tblen = 16;Nsamp = 1;前言= [3;1];msgLen = 500;
生成参考星座。
Const = pskmod(0:3,4);
使用随机数据生成消息,并在消息前加上前缀。调制随机数据。
msgData = randi([0 M-1],msgLen,1);msgData =[前言;msgData];msgSym = pskmod(msgData,M);
通过失真信道对数据进行滤波,并向信号中添加高斯噪声。
Chcoeffs = [0.623;0.489 + 0.234我;0.398我;0.21);Chanest = chcoeffs;msgFilt = filter(chcoeffs,1,msgSym);msgRx = awgn(msgFilt,9,“测量”);
均衡接收信号。要配置均衡器,需要提供信道估计、参考星座、均衡器回溯深度、工作模式、每个符号的样本数量和序文。相同的序言符号出现在消息向量的开头和for语法中mlseeq
.由于系统不使用postamble,因此将空向量指定为最后一个输入参数mlseeq
语法。
检查均衡信号的误码率。运行到运行的结果因使用随机数而不同。
eqSym = mlseeq(msgRx,chanest,const,tblen,“rst”nsamp序言,[]);[nsymerrs,ser] = symerr(msgSym,eqSym)
Nsymerrs = 8
Ser = 0.0159
使用MLSE均衡器金宝app
的MLSE均衡器块使用维特比算法通过色散信道来均衡线性调制信号。该块输出信号的最大似然序列估计(MLSE),使用信道的估计建模为有限输入响应(FIR)滤波器。当使用MLSE均衡器块中,指定输入信号的信道估计和信号星座。类的输入参数中,还可以指定预期的输入信号序文和后序MLSE均衡器块。
动态改变信道的MLSE均衡
使用最大似然序列估计(MLSE)均衡器来平衡多径瑞利衰落信道的影响。MLSE均衡器输入经过时变色散信道的数据和信道的估计值。信道估计包含动态演化的双路瑞利衰落信道的信道系数。
模型结构
发射机产生QPSK随机信号数据。
信道损耗包括多径衰落和AWGN。
接收机采用MLSE均衡和QPSK解调。
该模型使用范围和误码率计算来显示系统行为。
探索范例模型
实验模型
的伯努利二进制发生器
5e-6秒的块采样时间对应于200 kbps的比特速率和100 ksym/sec的QPSK符号速率。
的多径瑞利衰落信道
块设置包括:
最大多普勒频移为30hz。
离散路径时延为[0 1e-5],对应输入QPSK符号数据连续两次采样次数。该延迟反映了双路信道的最简单延迟向量。
平均路径增益为[0 -10]。
平均路径增益归一化为0 dB,使平均功率输入到
情况下
块为1w。
的MLSE均衡器
块的回溯深度设置为10。改变这个深度来研究它对误码率(BER)的影响。
QPSK解调器接受一个n乘1的输入帧并生成一个2n乘1的输出帧。这个输出帧和回溯深度为10会导致20位的延迟。该模型对每帧有100个样本的帧执行基于帧的处理。由于基于帧的处理,模型中存在100位的固有延迟。在错误率计算块的接收延迟参数中设置120的合并接收延迟,对齐样本。
显示计算出的误码率。星座图显示了均衡前后的星座。
Ber = 0.033645