(66)RLS均衡器和LMS均衡器作用于通过频率选择性衰落信道的16-QAM信号的性能对比MATLAB仿真


前言

首先从理论上对比分析了RLS和LMS的算法原理和收敛速度,然后介绍了各自的应用场景。然后使用MATLAB仿真建模,分别使用RLS算法自适应滤波器和LMS算法自适应滤波器对通过频率选择性衰落信道的16-QAM信号进行均衡,进行两种算法的性能对比,给出了仿真结果。


一、RLS和LMS算法对比

RLS和LMS都是用于自适应系统中的滤波算法,它们能够根据输入信号自动调整滤波器的系数以最小化误差。以下是两者之间的对比分析:

1. 算法原理

LMS算法基于最速下降法(Steepest Descent Method),利用输入信号的功率进行迭代,算法简单,计算量小。

RLS算法基于最小二乘法(Least Squares Method),考虑了过去的所有输入信号,通过递推公式更新滤波器系数,算法复杂,计算量大。

与LMS算法相比,RLS方法在适应未知系统方面提供了更快的收敛速度和更小的误差,其代价是需要更大的计算量。

2. 收敛速度

LMS算法收敛速度较慢,特别是在信噪比较低的环境中。收敛速度与步长(mu)的选择有很大关系,步长太大可能导致不稳定,步长太小则收敛慢。

RLS算法收敛速度快,能够快速跟踪信号的变化。收敛速度与遗忘因子(lambda)有关,遗忘因子接近1时,算法的记忆力强,收敛速度快。

3. 应用场景

LMS算法适用于对实时性要求高、计算资源有限的环境。常用于噪声对消、信道均衡等领域。

RLS算法适用于对收敛速度要求高、计算资源相对丰富的环境。常用于信号处理、系统辨识等领域。

总结来说,LMS算法因其简单和低计算复杂度而广泛应用于实时系统,而RLS算法则因其快速收敛特性而在需要快速跟踪信号变化的场合中更为合适。选择哪种算法取决于具体的应用需求、系统资源以及性能要求。

二、RLS和LMS算法用于信道均衡的MATLAB仿真

使用RLS算法和LMS算法对通过频率选择性衰落信道的16-QAM信号进行均衡,并比较两种算法的性能。仿真代码如下:

%指定调制阶数。生成相应的QAM参考星座。
M = 16; 
sigConst = qammod(0:M-1,M,'UnitAveragePower',true);

% 创建一个具有三个抽头的频率选择性静态信道。
rchan = comm.RayleighChannel('SampleRate',1000, ...
    'PathDelays',[0 1e-3 2e-3],'AveragePathGains',[0 -3 -6], ...
    'MaximumDopplerShift',0, ...
    'RandomStream','mt19937ar with seed','Seed',73);

%% RLS均衡器
eqrls = comm.DecisionFeedbackEqualizer('Algorithm','RLS');
eqrls.NumForwardTaps = 6;
eqrls.NumFeedbackTaps = 1;
eqrls.ForgettingFactor = 0.99;
eqrls.InitialInverseCorrelationMatrix = 0.1;
eqrls.ReferenceTap = 3;
eqrls.Constellation = sigConst;

% 生成并QAM调制随机训练序列。
trainData = randi([0 M-1],4000,1);
trainSig = qammod(trainData,M,'UnitAveragePower',true);

% 通过瑞利衰落信道传递序列。
rxSig = rchan(trainSig);

% 将接收到的信号和训练信号通过均衡器,以设置均衡器抽头权重。训练序列之后,进行判决导向模式继续工作。
tic
[eqSig,errorSig] = eqrls(rxSig, trainSig(1:1000));
rlstime = toc;              % 测量执行处理循环所需的时间。

% 绘制估计误差的大小。
figure()
plot(abs(errorSig))
grid on
title('Error Estimate, RLS Equalizer')
xlabel('Symbols')
ylabel('Amplitude')
ylim([0 1.4])
% 误差在200个符号内收敛。

% 绘制接收信号和均衡信号的星座图。
h = scatterplot(rxSig,1,0,'c.');
hold on
scatterplot(eqSig(501:end),1,0,'b.',h)
legend('Received Signal','Equalized Signal','Location','northeastoutside')
title('RLS Equalizer')
hold off
% 均衡器抵消了衰落信道的影响。

%% LMS均衡器
% 使用LMS均衡器重复均衡过程。创建LMS均衡器对象。
eqlms = comm.DecisionFeedbackEqualizer('Algorithm','LMS');
eqlms.NumForwardTaps = 6;
eqlms.NumFeedbackTaps = 1;
eqlms.StepSize = 0.03;
eqlms.Constellation = sigConst;

% 训练LMS均衡器,以设置均衡器抽头权重。训练序列之后,进行判决导向模式继续工作。
tic
[eqSig,errorSig] = eqlms(rxSig, trainSig(1:1000));
lmstime = toc;              % 测量执行处理循环所需的时间

% 绘制估计误差的大小。
figure()
plot(abs(errorSig))
grid on
title('Error Estimate, LMS Equalizer')
xlabel('Symbols')
ylabel('Amplitude')
ylim([0 1.4])
% 训练LMS均衡器需要1000个符号。

% 绘制接收信号和均衡信号的星座图。
h = scatterplot(rxSig,1,0,'c.');
hold on
scatterplot(eqSig(1001:end),1,0,'b.',h)
legend('Received Signal','Equalized Signal','Location','northeastoutside')
title('LMS Equalizer')
hold off
% 均衡器抵消了衰落信道的影响。

% 比较两种均衡器算法的循环执行时间
rlstime
lmstime

三、仿真结果

仿真结果如下:

1.RLS均衡器的误差曲线

在这里插入图片描述

2. RLS均衡器均衡前后的星座图

在这里插入图片描述

3. LMS均衡器的误差曲线

在这里插入图片描述

4. LMS均衡器均衡前后的星座图

在这里插入图片描述

5. RLS算法和LMS算法的运行时间对比

rlstime = 0.0065
lmstime = 0.0014

结论:
由RLS算法和LMS算法均衡的误差曲线对比,和两种算法的耗时对比,可以看到LMS算法的计算效率更高,执行时间是RLS算法的1/5,但是,LMS算法所需的训练序列是RLS算法的5倍。仿真结果与理论分析一致。

总结与后续

本文是RLS自适应滤波器应用举例的第五篇文章,给出了RLS均衡器和LMS均衡器作用于通过频率选择性衰落信道的16-QAM信号的性能对比MATLAB仿真。至此,就均衡器这一主题,先后介绍了迫零均衡器MMSE均衡器LMS均衡器RLS均衡器等类型的原理介绍,每一种滤波器类型都给出了详细的MATLAB仿真代码与仿真结果。后续还将对面向判决的自适应均衡器进行详细介绍,给出MATLAB仿真代码与仿真结果,希望对您有用。感谢关注!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值