m基于LMMSE+turbo算法的信道估计均衡器误码率仿真,对比LS,DEF以及LMMSE三种均衡算法误码率

news2024/11/28 5:28:55

目录

1.算法描述

2.仿真效果预览

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       本文推导了符号间干扰(ISI)信道的矢量形状因子图表示。结果图具有树形结构,避免了现有图方法中的短周期问题。基于联合高斯近似,我们在LLR(对数似然比)之间建立了联系由二进制输入和LMMSE(线性最小均方误差)驱动的线性系统的估计器高斯输入驱动的线性系统的估计器。此连接有助于应用最近提出的ISI信道无周期图高斯消息传递技术。

       LMMSE+Turbo主要原理见如下文献:

 从参考文献中的内容可知,整个系统大概的结构如下所示:

所以,我们按这个结构进行编程设计。

LMMSE:

 首先将MMSE计算公式中的XHX用其均值来代替,即

     

         为什么用均值来代替即时值能降低计算复杂度?这需要分析XHX里面的数据是什么,它是一个MM的矩阵,其对角线上是已知数据(导频信号)的功率,而其他位置的数据则是已知数据与其自身延迟数据的相关,该相关值可近似为满足标准正态分布的信号(均值为0)。那么对应到E(XHX),其对角线上的数据就是已知数据的平均功率,而其他位置的数据则为0。因此通过这种替代,可将hmmse进一步做如下化简

 其中SNR为接收信号的信噪比,而β则是与调制方式有关的一个常数。 

TURBO: 

      turbo Codes译码是一类具有反馈结构的伪随机译码器,2个码可以交替互不影响的译码,并且还可以通过关于系统码信息位的软判决输出相互传递信息,进行递推式迭代译码。Turbo译码结构如图1所示: 

      Turbo码的译码算法主要分为两大类:一类是基于最大后验概率(Maximum A Posteriori,MAP)软输出算法,这类算法由标准MAP算法演化得来。对标准MAP算法取对数得到Log-MAP算法,对Log-MAP算法中的分支度量进行简化,得到MAX-Log-MAP算法。另一类是基于Viterbi算法的软输出算法,是对卷积码的译码算法Viterbi的改进,使其满足SISO特性,软信息可以在两个分量译码器之间交换。这种改进的Viterbi算法为软输出Viterbi算法(SOVA)。

2.仿真效果预览

matlab2022a仿真结果如下:

 

3.MATLAB核心程序

.....................................
 
for j=1:length(SNR_in_dB)
    %通过既有码间干扰又有白噪声信道
    for jj = 1:1000
        j
        jj
    info      = [ones(1,2048),func_random_binary(N)];%产生二进制信号序列
    %Encoder
    info2 = [];
    for ii = 1:(N+2048)/length(Interleaver)
        tmps  = info(length(Interleaver)*(ii-1)+1:length(Interleaver)*ii);
        info2 = [info2,tmps(Interleaver)];%交织
    end
    %turbo编码
    turbo_code = [func_turbo_encode_map(logical((info2+1)/2)),zeros(1,10000)];%82954,76810=6144
    %多径噪声信道
    [y,len,h]  = func_channel(2*turbo_code-1,SNR_in_dB(j));
    if j==1
       info4 = zeros(size(info)); 
    end
    %LMMSE均衡
    z          = func_LMMSE_eq(y,h,SNR_in_dB(j),info4);
    decis      = [2*[z>=0]-1]'; 
    %获得均衡后数据
    XX         = [decis(6:82953+5)];
 
    %demap_decode,译码
    output= 2*func_turbo_decode_demap(XX,ITER)-1;%82953
    
    %解交织
    info3 = [];
    for ii = 1:(N+2048)/length(De_Interleaver)
        tmps2  = output(length(De_Interleaver)*(ii-1)+1:length(De_Interleaver)*ii);
        info3 = [info3,tmps2(De_Interleaver)];%交织
    end
    
    %反馈,交织
    info4 = [];
    for ii = 1:(N+2048)/length(Interleaver)
        tmps3 = info3(length(Interleaver)*(ii-1)+1:length(Interleaver)*ii);
        info4 = [info4,tmps3(Interleaver)];%交织
    end
    
    %初始误码统计数
    NumErr1 = sum(info(1:27499)~=info3(1:27499)); 
    if NumErr1 == 0%无法统计到误码率
       NumErr1 = 1;
    end
    
    Pe4(j,jj)  = NumErr1/N; 
    end
end;  
01-142m

4.完整MATLAB

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CUDA入门和网络加速学习(二)

0. 简介 最近作者希望系统性的去学习一下CUDA加速的相关知识,正好看到深蓝学院有这一门课程。所以这里作者以此课程来作为主线来进行记录分享,方便能给CUDA网络加速学习的萌新们去提供一定的帮助。 1. 基础矩阵乘法 下图是矩阵乘法的示意图&#xff0…

MySQL表的增删查改(上)

作者:~小明学编程 文章专栏:MySQL 格言:目之所及皆为回忆,心之所想皆为过往 前面给大家分享了关于数据库的一些基本的操作,今天分享的是数据库的核心内容,那就是我们常说的增删查改,也是我们数…

达梦数据库,备份目录冲突

问题描述 达梦数据库执行全库备份,BACKUP DATABASE FULL BACKUPSET ‘/data_share/data_back’; 提示备份目录冲突 解决办法 指定的目录必须为一个空目录。 下图,我指定的目录下有一个test文件夹,所以导致失败,把test文件删除m

[附源码]Python计算机毕业设计SSM基于WEB的网上零食销售系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Python OpenCV中的图像阈值处理

1 前言 上一篇介绍了用C如何对一幅图像进行阈值处理,本篇接着用python来做同样的事情。 图像阈值处理是很多高级算法的底层逻辑之一,比如在做图形检测,轮廓识别时,常常会先对图像进行阈值处理,然后再进行具体的检测或…

FreeRTOS使用 — 合理使用内存 “ 任务中创建任务 ”

前言 在我们学习 RTOS 的过程中,很多朋友都不会遇到内存不够的问题,因为大部分的开发板使用的芯片对学习来说,内存 “足够大” 。所以基本上很多人学会了基本功能,到了实际工作中使用,往往会遇到内存不够的问题&#…

pikachu靶场-10 XXE漏洞

XXE漏洞 概述 XXE -“xml external entity injection” 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说服务端接收和解析了来自用户端的xml数据,而又没有做严…

shell语法总结一(持续补充)

文章目录一、变量1、变量的命名规则2、查看变量3、删除命令4、变量的作用域4.1、局部变量4.2、全局变量4.3、环境变量5、自定义变量6、只读变量二、字符串1、单引号2、双引号(用的多)3、拼接字符串4、获取字符串的长度5、提取子字符串三、shell数组1、定…

必须掌握的数据库面试问题

一、为什么用自增列作为主键 1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。 如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。 如果也没有这样的唯一索引,则InnoDB会选择内置…

1990-2021年全国各省产业高级化 数据

1990-2021年全国各省产业高级化数据 1、来源为:统计NJ、各省NJ 2、包括:全国31个省份 3、时间:1990-2021年 4、指标包括: 各地区经纬度、第三产业增加值、第二产业增加值、高级化水平 高级化水平第三产业增加值(亿元) / 第二…

HTTP协议【报文格式】

文章目录HTTP协议什么是HTTP协议HTTP协议格式抓包工具的使用HTTP请求URLURL的组成URL encodeHTTP请求的报文格式HTTP响应的报文格式HTTP方法GET方法POST方法POST方法与GET方法的区别请求报头HTTP响应状态码状态码的组成状态码的类别HTTP协议 什么是HTTP协议 HTTP协议即Hyper T…

m基于GA遗传优化的多因素加权竞价博弈频谱分配算法matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 假设有M个用户均为MIMO Full Duplex&#xff0c;N个频率&#xff0c;1<N<M&#xff0c;设计算法实现M个用户与N个频率的匹配。 由于在一个MIMO系统中&#xff0c;用户数量M大于可用的频谱个…

web自动化测试入门篇04——selenium+python基础方法封装

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

记录一次解决centos不定时触发oom的经历

前言 前一段时间&#xff0c;业务部门的系统不定时的反馈&#xff0c;系统打开不了&#xff0c;提示&#xff1a; 等技术开发同学反应过来去查看业务状态时&#xff0c;服务又恢复了&#xff0c;由于不是核心的业务&#xff0c;并且出问题差不多1分钟左右&#xff0c;没太在意…

【Vue 快速入门系列】todoList案例小总结

文章目录一、案例效果二、项目介绍三、版本更新迭代末、项目素材1.css样式2.html一、案例效果 如下图所示&#xff0c;制作一个这样的记事本&#xff0c;可以使用这个记事本进行数据的存储以及管理&#xff0c;样式是天禹老师写好的我们直接使用就好了&#xff0c;主要在这个小…

[UE][UE5]零基础学习-学习记录1-UE5安装与基本使用方法

[UE5]学习1-UE5安装与基本使用方法写在前面01.作者碎碎念2.UE5安装方法01.UE5需要的电脑配置02.UE5安装方法001.Epic下载002.下载安装UE503.基本使用方法001.创建项目打开现有的项目&#xff1a;002.文件目录结构003.用户界面介绍1).3D画面视窗2).菜单栏3).内容浏览器4).属性面…

关于CM3/CM4位带操作的总结

1.位带操作定义 STM32的存储器映射中的内存区域和外设区域有一段地址空间&#xff08;都是最低1MB&#xff09;是位带区域&#xff0c;跟这个区域相对应的有一段位带别名区域&#xff0c;位带别名区的大小是位带区的32倍&#xff0c;位带别名区的每一个地址都对应位带区域的一个…

C. Hamiltonian Wall edu139 div2

Problem - C - Codeforces 题意是给你一个2*n的网格&#xff0c;让你一笔把所有的B涂满&#xff0c;并且只能涂一次&#xff0c;问你是否可行 分析&#xff1a; 其实分析的时候我想到了转移。每一次的结果是由上一次转移而来&#xff0c;所以如果前后矛盾的话&#xff0c;即…

人工智能:智能语音技术应用场景介绍

❤️作者主页&#xff1a;IT技术分享社区 ❤️作者简介&#xff1a;大家好,我是IT技术分享社区的博主&#xff0c;从事C#、Java开发九年&#xff0c;对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️个人荣誉&#xff1a; 数据库领域优质创作者&#x1f3c6;&#x…

虹科QA | SWCF2022 12月6日演讲笔记:C波段卫星与5G之间的干扰排查及解决方案

虹科2022年度SWCF卫星通信与仿真测试研讨会正在进行中。昨日精彩演讲&#xff1a;C波段卫星与5G之间的干扰排查及解决方案&#xff0c;感谢大家的观看与支持&#xff01; 昨晚的直播间收到一些粉丝的技术问题&#xff0c;虹小科汇总了热点问题并请讲师详细解答&#xff0c;在此…