多径信道下的LMS、RLS均衡算法研究(三)
%http://blog.sina.com.cn/s/blog_5def5a660100ie4r.html
%采用10次蒙特卡洛仿真绘制结果,如果想获得更平滑结果,可适当调整nFrame,我将DFE-LMS和横向滤波器LMS
%均衡做在了一起比较,如有问题,请留言!
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% DFE-LMS算法 实数基带系统仿真程序
% 功能:实数基带系统判决反馈LMS均衡算法仿真-->BER\MSE指标
% 编写:李振兴
% E-Mail:lizhenxing@126.com
% Tel:
% 任何问题以及错误欢迎通过邮箱交流
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear all
close all hidden
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% 初始化参数设置(用户可根据需要修改此处参数)
nFrame = 10; % 仿真发送的帧数(可作为蒙特卡洛仿真次数)
nPacket = 2500; % 每帧的发送的数据点数
stepa = 0.01; % 学习步长
stepb = 0.1;
dB = 25; % 信噪比
e = zeros(1,nPacket); % 瞬时计算误差
E = zeros(1,nPacket); % 统计均方误差(为平滑用)
h = [0.18,0.3,1,0.18]; %ISI信道参数
h = h/norm(h);
nW = 11; % 横向均衡器阶数
nB = 2; % 反馈层阶数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 注意:当帧数nFrame不等于1的时候不要绘制星座图!
% nFrame根据需要可以适当设置,只要使得MSE曲线足够平滑就可以
% 均衡器阶数对结果影响较大,这里给出的是经过实验的最佳阶数
% 学习步长不宜设置过大
%% 算法实现过程
LP = nPacket-nW; % 移掉几个数据避免负或零下标
X = zeros(nW+1,LP); % 组织均衡器输入矩阵
Y = zeros(nB+1,LP);
y = zeros(1,nPacket);
z = zeros(1,nPacket);% 循环开始(迭代次数=nFrame*nPacket)
for kk = 1:nFrame % 此处修改蒙特卡洛次数W = zeros(nW+1,1);B = zeros(nB+1,1);sX = round(rand(1,nPacket))*2-1; % BPSK 或 2PAM 信号
% scatterplot(sX); % nFrame=1时调试用rX = filter(h,1,sX); % 通过信道
% scatterplot(rX); % nFrame=1时调试用vn = randn(1,nPacket); % 产生噪声数据vn = vn/norm(vn)*10^(-dB/20)*norm(rX); % 根据信噪比调整噪声功率SNR = 20*log10(norm(rX)/norm(vn)); % 计算SNRrX = rX+vn; % 接收信号XX = sign(rX);[num,rate] = symerr(XX,sX) % 计算均衡前的误码
% scatterplot(rX); % nFrame=1时调试用for i=1:LPX(:,i)=rX(i+nW:-1:i).';endfor i = 1:LPY(:,i) = y(i+nB:-1:i);end% 开始均衡器参数调整for i = 1:LPif i < nB+1y(i) = W'*X(:,i);for j = 1:LPY(:,i) = sign(y(i+nB:-1:i));end temp = B'*Y(:,i);elsey(i) = W'*X(:,i)+temp;Y(:,i) = sign(y(i:-1:i-nB));temp = B'*Y(:,i); endz(i) = W'*X(:,i)+temp;e(i) = z(i)-sX(i); % LMS代价函数W = W - stepa*2*e(i)*X(:,i); % LMS迭代算法B = B - stepb*2*e(i)*Y(:,i);E(i) = E(i)+e(i)^2;
end
end
save E;
clc
clear all
close all%% 初始化参数设置(用户可根据需要修改此处参数)
nFrame = 10; % 仿真发送的帧数(可作为蒙特卡洛仿真次数)
nPacket = 2500; % 每帧的发送的数据点数
step = 0.01; % 学习步长
dB = 25; % 信噪比
e1 = zeros(1,nPacket); % 瞬时计算误差
E1 = zeros(1,nPacket); % 统计均方误差(为平滑用)
h = [0.18,0.3,1,0.18]; %ISI信道参数
h = h/norm(h);
nW = 11; % 均衡器阶数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 注意:当帧数nFrame不等于1的时候不要绘制星座图!
% nFrame根据需要可以适当设置,只要使得MSE曲线足够平滑就可以
% 均衡器阶数对结果影响较大,这里给出的是经过实验的最佳阶数
% 学习步长不宜设置过大
%% 算法实现过程
LP = nPacket-nW; % 移掉几个数据避免负或零下标
X = zeros(nW+1,LP); % 组织均衡器输入矩阵% 循环开始(迭代次数=nFrame*nPacket)
for kk = 1:nFrame % 此处修改蒙特卡洛次数W = zeros(nW+1,1);sX = round(rand(1,nPacket))*2-1; % BPSK 或 2PAM 信号
% scatterplot(sX); % nFrame=1时调试用rX = filter(h,1,sX); % 通过信道
% scatterplot(rX); % nFrame=1时调试用vn = randn(1,nPacket); % 产生噪声数据vn = vn/norm(vn)*10^(-dB/20)*norm(rX); % 根据信噪比调整噪声功率SNR = 20*log10(norm(rX)/norm(vn)); % 计算SNRrX = rX+vn; % 接收信号XX = sign(rX);[num,rate] = symerr(XX,sX) % 计算均衡前的误码
% scatterplot(rX); % nFrame=1时调试用for i=1:LPX(:,i)=rX(i+nW:-1:i).';end% 开始均衡器参数调整for i = 1:LPe1(i) = W'*X(:,i)-sX(i); % LMS代价函数W = W - step*2*e1(i)*X(:,i); % LMS迭代算法E1(i) = E1(i)+e1(i)^2;end
end% 平滑误差 load E.mat;figure(1);subplot(2,1,1);semilogy(E/nFrame,'r')legend('DFELMS');%hold onsubplot(2,1,2);semilogy(E1/nFrame,'k')%hold off%legend('DFE','LMS');legend('LMS');
LMS与DFE-LMS均方误差曲线对比
基于DFE的LMS算法流程图
参考文献
[1].http://blog.sina.com.cn/s/blog_5def5a660100ie4r.html
[2].刘茂才. 室内可见光通信系统均衡技术研究[D].哈尔滨:哈尔滨工业大学,2015
多径信道下的LMS、RLS均衡算法研究(三)相关推荐
- 多径信道下的LMS、RLS均衡算法研究(二)
将经过多径衰落信道后信号通过LMS(least-mean-square)最小均方.RLS(recursive least-squares)最小二乘算法进行均衡处理. 图1 LMS.RLS算法均衡效果的 ...
- 多径信道下通过LMS均衡算法提高通信质量——详细版
目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...
- 沉浸式 3D 场景下的多视点视频 增强算法研究
沉浸式 3D 场景下的多视点视频 增强算法研究 研究内容 图像质量增强 为什么进行图像质量增强 图像有损压缩技术 多视点视频中的深度图像特点 视点数目增强 虚拟视点合成技术 视点外推 为什么进行视点数 ...
- 【误码率仿真】基于matlab多径信道下OFDM通信系统误码率仿真【含Matlab源码 2078期】
⛄一.OFDM简介 1 OFDM调制解调原理 一个OFDM信号可以表示为 每个子载波可采用正交幅度调制(QAM)或相移键控调制(PSK).其中Xi,k为第i个OFDM符号在第k个子载波上传输的数据;N ...
- 【OFDM】多径信道下OFDM通信系统误码率仿真附matlab代码
1 内容介绍 仿真是科学研究和工程建设中非常重要的方法.交频分复用(OFDM)技术是下一代移动通信的核心技术之一.重点研究了多径瑞利衰落信道下最大多径时延对基于OFDM技术的通信系统性能的影响. 2 ...
- m低信噪比下GPS信号的捕获算法研究,分别使用matlab和FPGA对算法进行仿真和硬件实现
目录 1.算法概述 2.仿真效果预览 3.MATLAB/FPGA部分代码预览 4.完整MATLAB/FPGA程序 1.算法概述 GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和 ...
- 多径信道理论的直观感受与MATLAB仿真
格式乱了,程序源码与原文点击下面链接: 多径信道理论的直观感受与MATLAB仿真 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/116761401 目录 1.多径 ...
- QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法
前言 在阿里七层流量入口接入层(Application Gateway)场景下, Nginx 官方的Smooth Weighted Round-Robin( SWRR )负载均衡算法已经无法再完美施展 ...
- Nginx系列之负载均衡算法策略
负载均衡实际上是一种网络技术,主要是基于现有的网络结构,增加吞吐量.加强网络数据处理能力.提高应用系统的灵活和可用性.利用Nginx可实现负载均衡,Nginx支持加权Round-Robin负载均衡算法 ...
最新文章
- 调用ajax后页面为什么会刷新,为什么页面在JQuery ajax调用之后重新加载?
- 第五章 PX4-GPS解析
- Coolite(二)服务器端Alert,Confirm,Prompt
- ElementUI自定义icon步骤条
- linux查代替命令,Linux下查/删/替 命令(转)
- 在Linux环境下使用Apache部署ASP.NET Core
- react重新渲染菜单_React实现递归组件
- 关于搞技术的一点思考
- mysql半同步模式_MySQL 半同步复制模式的实现
- 数据结构(C语言)——电话号码查询系统实现
- AD转换器输入之前接一个电压跟随器是为什么
- python用户画像_研究用户应该从哪几个维度去构建用户画像模型?
- 实时报价查询系统C++编程实现(阿里面试题改编)
- 小黄鸡QQ空间自动回复机器人
- 田忌赛马(贪心算法)
- 石家庄地铁售票系统源代码
- JS逆向-某乎x-zse-96参数(2023-2-6)
- Poi解析对比excel表格
- 【shell脚本】——IFS的概念和用法
- android新闻客户端(有源码)