RLS算法实现自适应均衡器的Matlab仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于RLS算法实现自适应均衡器的MATLAB仿真
1. 实验目的
用RLS算法实现自适应均衡器,画出一次实验的误差平方的收敛曲线,给出最后设计滤波器系数。一次实验的训练序列长度为500。进行20次独立实验,画出误差平方的收敛曲线。
2. 实验原理
自适应均衡器的工作过程包含两个阶段,一是训练过程,二是跟踪过程。在训练过程中,发送端向接收机发射一组已知的固定长度训练序列,接收机根据训练序列设定滤波器的参数,使检测误码率最小。典型的训练序列是伪随机二进制信号或一个固定的波形信号序列,紧跟在训练序列后面的是用户消息码元序列。接收机的自适应均衡器采用递归算法估计信道特性,调整滤波器参数,补偿信道特性失真,训练序列的选择应满足接收机均衡器在最恶劣的信道条件下也能实现滤波器参数调整
图1自适应均衡试验框图
如图1所示,系统中使用两个独立的随机数发生器,一个用xn来表示,用来测试信道。另一个用v(n)来表示,用来模拟接收器中加性白噪声的影响。序列xn是xn=1的Bernoulli2序列,随变量xn具有零均值和单位方差。第二个序列v(n)具有零均值,其方差v由实验中需要的信噪比决定。均衡器有11个抽头。
3. MATLAB仿真
1. RLS法1次实验
clear;
N=500;
db=25;
sh1=sqrt(10^(-db/10));
u=0.8;
m=0.0001*sh1^2;
error_s=0;
for loop=1:1
w=zeros(1,11)';
p=1/m*eye(11,11);
V=sh1*randn(1,N );
Z=randn(1,N)-0.5;
x=sign(Z);
for n=3:N;
M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);
end
z=M+V;
for n=8:N;
d(n)=x(n-7);
end
for n=11:N;
z1=[z(n) z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9) z(n-10)]';
k=u^(-1).*p*z1./(1+u^(-1).*z1'*p*z1);
e(n)=d(n)-w'*z1;
w=w+k.*conj(e(n));
p=u^(-1).*p-u^(-1).*k*z1'*p;
y(n)=w'*z1;
e1(n)=d(n)-w'*z1;
end
error_s=error_s+e.^2;
end
w
error_s=error_s./1;
n=1:N;
plot(n,error_s);
xlabel('n (忘却因子u=1;DB=25时)');
ylabel('误差');
title('RLS法1次实验误差平方的均值曲线');
2. RLS法20次实验
clear;
N=500;
db=25;
sh1=sqrt(10^(-db/10));
u=0.8;
m=0.0001*sh1^2;
error_s=0;
for loop=1:20
w=zeros(1,11)';
p=1/m*eye(11,11);
V=sh1*randn(1,N );
Z=randn(1,N)-0.5;
x=sign(Z);
for n=3:N;
M(n)=0.3*x(n)+0.9*x(n-1)+0.3*x(n-2);
end
z=M+V;
for n=8:N;
d(n)=x(n-7);
end
for n=11:N;
z1=[z(n) z(n-1) z(n-2) z(n-3) z(n-4) z(n-5) z(n-6) z(n-7) z(n-8) z(n-9) z(n-10)]';
k=u^(-1).*p*z1./(1+u^(-1).*z1'*p*z1);
e(n)=d(n)-w'*z1;
w=w+k.*conj(e(n));
p=u^(-1).*p-u^(-1).*k*z1'*p;
y(n)=w'*z1;
e1(n)=d(n)-w'*z1;
end
error_s=error_s+e.^2;
end
w
error_s=error_s./20;
n=1:N;
plot(n,error_s);
xlabel('n (忘却因子u=1;DB=25时)');
ylabel('误差');
title('RLS法20次实验误差平方的均值曲线');
4. 实验结果
图2
图3