m软件接收机中同步技术以及LMS-RLS自适应均衡技术的matlab仿真

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       自适应均衡属于自适应信号处理的应用范畴,各种各样的自适应均衡算法如迫零(ZF)算法、最小均方(LMS)算法、递归最小二乘(RLS)算法、变换域均衡算法、Bussgang算法、高阶或循环统计量算法、基于非线性滤波器或神经网络的均衡算法等应运而生。均衡器通常工作在接收机的基带或中频信号部分,基带信号的复包络含有信道带宽信号的全部信息,所以,均衡器通常在基带信号完成估计信道冲激响应和解调输出信号中实现自适应算法等,本文选择了两种典型的自适应算法:以LMS自适应均衡器和RLS自适应均衡器为基础,用MATLAB仿真软件对LMS和RLS两种算法进行仿真,比较并分析了两种算法的性能。

1自适应均衡器

        一种均衡器,可用于校正高速双极性信号的符号间干扰。它可响应电话线路的静态和动态性能变化。均衡器包括若干级逻辑控制线路及抽头线路,每个抽头线路有一个积分器,积分器由电子开关控制进行充电放电。积分器的输出在逻辑控制下相加或相减。均衡信号还可以在线路变压器处直接监视。

       自适应均衡器的工作过程包含两个阶段,典型的训练序列是伪随机二进制信号或一个固定的波形信号序列,紧跟在训练序列后面的是用户消息码元序列。接收机的自适应均衡器采用递归算法估计信道特性,调整滤波器参数,补偿信道特性失真,训练序列的选择应满足接收机均衡器在最恶劣的信道估计条件下也能实现滤波器参数调整。所以,均衡器参数基本上接近最佳值,以保证用户数据的接收,成为均衡器的收敛。用户数据序列需要被分割成数据分组或时隙分段传送。

1基于LMS的自适应均衡算法

       感知器和自适应线性元件在历史上几乎是同时提出的,并且两者在对权值的调整的算法非常相似。它们都是基于纠错学习规则的学习算法。感知器算法存在如下问题:不能推广到一般的前向网络中;函数不是线性可分时,得不出任何结果。而由美国斯坦福大学的Widrow和Hoff在研究自适应理论时提出的LMS算法,由于其容易实现而很快得到了广泛应用,成为自适应滤波的标准算法。

LMS算法[1]采用的是最小均方误差准则,代价函数是:

3fd692d66721bf6e81d0b9817af96025.gif

2基于RLS的自适应均衡算法

RLS算法[3]所采用的准则是最小二乘准则,其代价函数为:

2dc034f93d7b6860aeaaa0667f16f0c3.png

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

3.MATLAB核心程序

clc;
clear;
close all;
warning off;
pack;
rng(2);
%产生QAM基带信号
%二进制数据长度
N      = 10000;      
 %传送的有效数据长度
N_data = N;             
M      = 32;
 
for i = 1:N
    x(i) = 1 + floor(M*rand);
end
qam_sig = func_32QAM(x);
sybol1  = qam_sig(:,1);
sybol2  = qam_sig(:,2);
figure;
subplot(221);
plot(sybol1,sybol2,'b.');
axis([-7,7,-7,7]);
%成型滤波器
Fs   = 2000;         
T    = 2/Fs;           
t    =-5*T:1/Fs:5*T;   
t    = t+0.00001; 
alfa = 0.4;
p    = rcosfir(alfa,[-5,5],Fs*T,1000,'sqrt');
%%%%%%%%%%%%%%%%%%%%%基带成形
%I路成形
n    = length(sybol1);     % Number of symbols
r    = T*Fs;               % Oversampling factor 
pams1= zeros(size(1:r*n));
pams1(1:r:r*n)=sybol1;     % Pulse sequence
ynI  = filter(p,1,pams1);  % Pulse shaping filtering
%Q路成形
pams2= zeros(size(1:r*n));
pams2(1:r:r*n)=sybol2;     % Pulse sequence
ynQ  = filter(p,1,pams2);  % Pulse shaping filtering
%正交调制
yn0  = ynQ+ynI*j;
%星座图
subplot(222);
plot(ynQ,ynI,'b.');
axis([-7,7,-7,7]);
 
%%
%信道模型
SNR= 20;
H  = [0.47,0.8,0.6];%信道参数
yn = filter(H/sum(H),1,yn0);
%加入噪声
yn = awgn(yn,SNR); 
 
%接收初步滤波处理
H1    = fir1(7,0.5); 
yn    = filter(H1,1,yn);
%基带等效正解解调
r_ynQ = real(yn);
r_ynI = imag(yn);
%由于时延固定取常数 
delay       = 1; 
re_I        = r_ynI(delay);
re_Q        = r_ynQ(delay);
 
for i=1:(N/4-delay)
   re_I=[re_I,r_ynI(i*2+delay)];
   re_Q=[re_Q,r_ynQ(i*2+delay)];
end
%LMS均衡
uu          = 0.005;
Lens        = 1024;
%I路均衡
Order       = 18;
W           = zeros(size(1:Order+1)).';   
Start       = 1;
%取前Lens个数据作为训练序列
Ref(1:Lens) = sybol1(1:Lens);    
for i=Start+1:Lens-Order/2
    rk           = flipud(re_I(i:i+Order).');  
    Err(i-Start) = Ref(i-Start+Order/2) - W.'*rk;
    W            = W + uu*Err(i-Start)*rk;
end
%均衡
re_I        = filter(W,1,re_I);         
%Q路均衡
W           = zeros(size(1:Order+1)).';  
Ref(1:Lens) = sybol2(1:Lens);%取前512个数据作为训练序列
for i=Start+1:Lens-Order/2
    rk           = flipud(re_Q(i:i+Order).'); % Received signal vector
    Err(i-Start) = Ref(i-Start+Order/2)-W.'*rk; % Error signal, we use the symbol sequence known in
    W            = W+uu*Err(i-Start)*rk;
end
%均衡
re_Q        = filter(W,1,re_Q);  %对re_Q进行均衡
subplot(223);
s=re_I*j+re_Q;
plot(re_I,re_Q,'b.');
title('均衡后信号星座图(20db)');
axis([-7,7,-7,7]);
 
 
 
%%
%信道模型
SNR= 10;
H  = [0.47,0.8,0.6];%信道参数
yn = filter(H/sum(H),1,yn0);
%加入噪声
yn = awgn(yn,SNR); 
 
%接收初步滤波处理
H1    = fir1(7,0.5); 
yn    = filter(H1,1,yn);
%基带等效正解解调
r_ynQ = real(yn);
r_ynI = imag(yn);
%由于时延固定取常数 
delay       = 1; 
re_I        = r_ynI(delay);
re_Q        = r_ynQ(delay);
 
for i=1:(N/4-delay)
   re_I=[re_I,r_ynI(i*2+delay)];
   re_Q=[re_Q,r_ynQ(i*2+delay)];
end
%LMS均衡
uu          = 0.005;
Lens        = 1024;
%I路均衡
Order       = 18;
W           = zeros(size(1:Order+1)).';   
Start       = 1;
%取前Lens个数据作为训练序列
Ref(1:Lens) = sybol1(1:Lens);    
for i=Start+1:Lens-Order/2
    rk           = flipud(re_I(i:i+Order).');  
    Err(i-Start) = Ref(i-Start+Order/2) - W.'*rk;
    W            = W + uu*Err(i-Start)*rk;
end
%均衡
re_I        = filter(W,1,re_I);         
%Q路均衡
W           = zeros(size(1:Order+1)).';  
Ref(1:Lens) = sybol2(1:Lens);%取前512个数据作为训练序列
for i=Start+1:Lens-Order/2
    rk           = flipud(re_Q(i:i+Order).'); % Received signal vector
    Err(i-Start) = Ref(i-Start+Order/2)-W.'*rk; % Error signal, we use the symbol sequence known in
    W            = W+uu*Err(i-Start)*rk;
end
%均衡
re_Q        = filter(W,1,re_Q);  %对re_Q进行均衡
subplot(224);
s=re_I*j+re_Q;
plot(re_I,re_Q,'b.');
title('均衡后信号星座图(10db)');
axis([-7,7,-7,7]);
01_150m

4.完整MATLAB

V

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱C编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值