首页 > 其他分享 >自适应均衡matlab仿真,对比RLS,LMS以及NLMS的均衡前后星座图效果,调制采用4QAM,16QAM,64QAM

自适应均衡matlab仿真,对比RLS,LMS以及NLMS的均衡前后星座图效果,调制采用4QAM,16QAM,64QAM

时间:2023-03-01 21:11:06浏览次数:38  
标签:64QAM lamda NLMS lms sqrt 算法 均衡 n1 n2

1.算法描述

       在无线通信系统中,由于多径效应及码间干扰的存在,信号误码率会升高。均衡技术是一种对抗码间干扰的重要技术。本文将介绍LMS均衡和RLS均衡两种均衡算法。在线性和非线性均衡中的应用。将MSK信号经过三径多径信道。

 

       由于最陡下降法每次迭代都需要知道性能曲面上某点的梯度值,而实际上梯度值只能根据观察数据进行估计。而L M S LMSLMS实质上是用平方误差代替均方误差,即:

 

 

 

 

得到L M S LMSLMS算法的基本关系式:

 

 

 

 

RLS算法的关键是用二乘方的时间平均准则取代最小均方准则,并按照时间进行迭代计算,换句话说,对从起始时刻到当前时刻所有误差的平方进行平均并使之最小化,即:

 

 

 

 

对于,非平稳随机信号,为了更好的跟踪,引入一个指数加权因子对上式进行修正:

 

 

 

 

传统lms算法及归一化lms算法:

  

及其对于平稳过程,最小均方差(least mean square,lms)算法[4][5]是直接利用单次采样数据获得的e2(n)代替均方误差j(n),来进行梯度估计的。其算法流程如下:

  

(1)根据已知数据,期望信号d(n)和滤波器的输入信号矢量x(n)=[x(n)x(n-1)…x(1)]t,设置收敛因子μ(0<μ  

(2)初始化滤波器的权矢量w(0)=0(或由先验知识确定)、泄漏因子γ(0<γ<1,通常取γ近似为1);

 

(3)对n=0,1,2…,计算滤波器输出信号y(n)=xt(n)w(n)、误差信号e(n)=d(n)-y(n)、以及滤波器权更新系数w(n+1)=w(n)+2μe(n)x(n);

  

(4)归一化lms算法(nlms)在传统lms算法权值更新上做了调整:w(n+1)=w(n)+2μe(n)x(n)/[x(n)×x(n)-1+β],参数属性与传统lms算法相同,参数β为防止x(n)×x(n)-1过小权值更新失真而设置。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.MATLAB核心程序

 

l=35;
channel=[0.5,1.2,1.5,-1];
 
switch qam
    case 4
        sigam=sqrt(2);%%%QAM4
    case 16
        sigam=sqrt(10);%%%QAM16
    case 64
        sigam=sqrt(42);%%%QAM64
    case 256
        sigam=sqrt(170);%%%QAM64
end
 
lamda=1;%%%%   1/lamda
lamda=1/lamda;
phi=0.08;
 
 
sigam1=sqrt(norm(channel)^2/10^(snr/10));  %QPSK
sigam2=sqrt(sigam^2*norm(channel)^2/10^(snr/10)); %QAM16
 
%noise
v=zeros(1,n1+n2);
v(1:n1)=(sigam1/sqrt(2))*(randn(1,n1)+1j*randn(1,n1));
v(n1+1:n1+n2)=(sigam2/sqrt(2))*(randn(1,n2)+1j*randn(1,n2));
 
%data
 
s(1:n1)=(randi(2,1,n1)*sqrt(2)-sqrt(2)*3/2)+1j*(randi(2,1,n1)*sqrt(2)-sqrt(2)*3/2);
train=zeros(1,n1+delta);
train(delta+1:n1+delta)=s(1:n1);
 
s(n1+1:n1+n2)=qammod(randi(qam,1,n2)-1,qam);
 
y=filter(channel,1,s);
r=y+v;
 
 
w=zeros(l,1);
u=zeros(1,l);
e=zeros(1,n1+n2);
k=zeros(l,1);
p=1/phi*eye(l);
for i= 1:n1+delta
    u=[r(i),u(1:l-1)];
    ss(i)=u*w;
    d(i)=train(i);
    
    
    k=lamda*p*u'/(1+lamda*u*p*u');
    e(i)=d(i)-ss(i);
    w=w+k*e(i);   %%%%%%%%   
    p=lamda*p-lamda*k*u*p;
    
end
nm=0;
for i=n1+delta+1:n1+n2
    u=[r(i),u(1:l-1)];
    ss(i)=u*w;
    dd(i)=qammod(qamdemod(ss(i),qam),qam);
    d(i)=dd(i);
    
    k=lamda*p*u'/(1+lamda*u*p*u');
    e(i)=d(i)-ss(i);
    w=w+k*e(i);   %%%%%%%%   
    p=lamda*p-lamda*k*u*p;
    
    i;
    if(dd(i)~=s(i-delta))
        nm=nm+1;
    end
end

 

  

 

标签:64QAM,lamda,NLMS,lms,sqrt,算法,均衡,n1,n2
From: https://www.cnblogs.com/51matlab/p/17169796.html

相关文章

  • tomcat+NGINX实现负载均衡
    Tomcat+Nginx实现负载均衡,稳的一批!老炮说Java 2022-07-0814:00 发表于山西收录于合集#老炮说Java488个#nginx13个#负载均衡1个老炮说Java十......
  • LVS负载均衡DR模式
    拓扑图:推荐步骤:Firewalld防火墙配置IP地址,LVS调度器配置IP地址修改内核参数,配置web服务器IP地址,配置NFS共享存储服务器IP地址,客户端配置IP地址搭建共享存储配置允许web......
  • Nginx负载均衡配置
    upstreamtryy_8192{server192.168.104.221:8192weight=10max_fails=3fail_timeout=30s;server192.168.104.222:8192weight=10max_fails=3fail_timeout=3......
  • Ingress-nginx+内部LB(nginx)实现业务负载均衡
    注:本文使用k8s社区版ingress-nginx实现,涉及知识点:pod、pv、pvc、deployment、service、ingress、ingress-controller、nginx(loadbalance)一.ingress介绍1.ingress-ngin......
  • K8S集群+负载均衡层+防火墙 实例
    实验拓扑图:实验要求:(1)Kubernetes区域可采用Kubeadm方式进行安装。(2)要求在Kubernetes环境中,通过yaml文件的方式,创建2个NginxPod分别放置在两个不同的节点上,Pod使用......
  • 负载均衡
    题解:首先根据题意可知,每台计算机时互相独立的,因此下面的讲解只针对一台计算机每个任务的开始时间保证是递增的,对于任务a,再i时刻开始,a之前开始的任务如果结束时间小于等于......
  • K8S集群+负载均衡层+防火墙 实例
    实验拓扑图:实验要求:(1)Kubernetes区域可采用Kubeadm方式进行安装。(2)要求在Kubernetes环境中,通过yaml文件的方式,创建2个NginxPod分别放置在两个不同的节点上,Pod使用......
  • Java负载均衡简介及快速入门并实战(有源码)
    Java负载均衡是什么?将负载(工作任务,访问请求)进行分摊到多个操作单元(服务器,组件)上执行服务端:服务提供端,比如nginx负载均衡客户端:服务请求方,在发送请求之前已经选好了由哪个......
  • k8s-部署Nginx+Keepalived高可用负载均衡器
    本文章是 k8s二进制高可用集群部署 的分支。详细步骤请参考目录。Kubernetes集群高可用性包含以下两个层面的考虑:Etcd数据库的高可用性KubernetesMaster组件......
  • Nginx+Tomcat+Redis实现负载均衡会话保持
    Nginx+Tomcat+Redis实现负载均衡会话保持......