%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均衡算法研究(三)相关推荐

  1. 多径信道下的LMS、RLS均衡算法研究(二)

    将经过多径衰落信道后信号通过LMS(least-mean-square)最小均方.RLS(recursive least-squares)最小二乘算法进行均衡处理. 图1 LMS.RLS算法均衡效果的 ...

  2. 多径信道下通过LMS均衡算法提高通信质量——详细版

    目录 一.理论基础 二.核心程序 三.仿真测试结果 作者ID :fpga和matlab CSDN主页:https://blog.csdn.net/ccsss22?type=blog 擅长技术: 1.无 ...

  3. 沉浸式 3D 场景下的多视点视频 增强算法研究

    沉浸式 3D 场景下的多视点视频 增强算法研究 研究内容 图像质量增强 为什么进行图像质量增强 图像有损压缩技术 多视点视频中的深度图像特点 视点数目增强 虚拟视点合成技术 视点外推 为什么进行视点数 ...

  4. 【误码率仿真】基于matlab多径信道下OFDM通信系统误码率仿真【含Matlab源码 2078期】

    ⛄一.OFDM简介 1 OFDM调制解调原理 一个OFDM信号可以表示为 每个子载波可采用正交幅度调制(QAM)或相移键控调制(PSK).其中Xi,k为第i个OFDM符号在第k个子载波上传输的数据;N ...

  5. 【OFDM】多径信道下OFDM通信系统误码率仿真附matlab代码

    1 内容介绍 仿真是科学研究和工程建设中非常重要的方法.交频分复用(OFDM)技术是下一代移动通信的核心技术之一.重点研究了多径瑞利衰落信道下最大多径时延对基于OFDM技术的通信系统性能的影响. 2 ...

  6. m低信噪比下GPS信号的捕获算法研究,分别使用matlab和FPGA对算法进行仿真和硬件实现

    目录 1.算法概述 2.仿真效果预览 3.MATLAB/FPGA部分代码预览 4.完整MATLAB/FPGA程序 1.算法概述 GPS卫星发送的信号一般由3个分量组成:载波.伪码和导航电文,其中伪码和 ...

  7. 多径信道理论的直观感受与MATLAB仿真

    格式乱了,程序源码与原文点击下面链接: 多径信道理论的直观感受与MATLAB仿真 - 子木的文章 - 知乎 https://zhuanlan.zhihu.com/p/116761401 目录 1.多径 ...

  8. QPS 提升60%,揭秘阿里巴巴轻量级开源 Web 服务器 Tengine 负载均衡算法

    前言 在阿里七层流量入口接入层(Application Gateway)场景下, Nginx 官方的Smooth Weighted Round-Robin( SWRR )负载均衡算法已经无法再完美施展 ...

  9. Nginx系列之负载均衡算法策略

    负载均衡实际上是一种网络技术,主要是基于现有的网络结构,增加吞吐量.加强网络数据处理能力.提高应用系统的灵活和可用性.利用Nginx可实现负载均衡,Nginx支持加权Round-Robin负载均衡算法 ...

最新文章

  1. 调用ajax后页面为什么会刷新,为什么页面在JQuery ajax调用之后重新加载?
  2. 第五章 PX4-GPS解析
  3. Coolite(二)服务器端Alert,Confirm,Prompt
  4. ElementUI自定义icon步骤条
  5. linux查代替命令,Linux下查/删/替 命令(转)
  6. 在Linux环境下使用Apache部署ASP.NET Core
  7. react重新渲染菜单_React实现递归组件
  8. 关于搞技术的一点思考
  9. mysql半同步模式_MySQL 半同步复制模式的实现
  10. 数据结构(C语言)——电话号码查询系统实现
  11. AD转换器输入之前接一个电压跟随器是为什么
  12. python用户画像_研究用户应该从哪几个维度去构建用户画像模型?
  13. 实时报价查询系统C++编程实现(阿里面试题改编)
  14. 小黄鸡QQ空间自动回复机器人
  15. 田忌赛马(贪心算法)
  16. 石家庄地铁售票系统源代码
  17. JS逆向-某乎x-zse-96参数(2023-2-6)
  18. Poi解析对比excel表格
  19. 【shell脚本】——IFS的概念和用法
  20. android新闻客户端(有源码)

热门文章

  1. linux下使用命令行将informix数据库表导出.unl文件
  2. 计算机网络中的层次结构
  3. X710网卡接收丢包
  4. ps 图片提取线稿方法2种 转
  5. 集丰照明|一帖说清6种防眩射灯应用在家装修上
  6. 阿铭Linux_传统IDC 部署网站学习笔记20190129
  7. Python调用Rasa API服务进行连续对话
  8. 0基础学3dmax建模难吗?
  9. 每天五分钟玩转K8S(二)
  10. c语言初步实验报告,c语言实验报告(大一c语言实验报告答案)