LDPC码的编译码原理简述

news2024/11/29 20:42:48

关于fpga调用ldpc IP
core的相关参数问题可以看我的另一篇文章

LDPC码由Gallager在1962年提出,全称为

Low Density Parity-check Codes 低密度奇偶校验码

它的译码性能可以逼近Shannon信道容量限,广富盛名的Turbo码也被证明是LDPC码的一个特例。并且LDPC码具有在中长码长时超过 Turbo 码的性能,并且具有译码复杂度更低,能够并行译码及译码错误可检测等特点。

LDPC码内容较为复杂,本人由于未学过图论等重要相关知识,难以透彻理解其本质,因此本文主要是介绍以及引用、链接他人的描述。

LDPC编码

ldpc码是一种线性分组码,因此它有生成矩阵和校验矩阵。
我们假设有一个长度为k的信息序列 s 1 ∗ k s_{1*k} s1k,可以通过生成矩阵 G k ∗ n G_{k*n} Gkn得到编码后码长为n的码字
x 1 ∗ n = s 1 ∗ k ⋅ G k ∗ n x_{1*n} = s_{1*k} · G_{k*n} x1n=s1kGkn
同时还有一个唯一对应的校验矩阵 H ( n − k ) ∗ n H_{(n-k)*n} H(nk)n,所有码字满足 x 1 ∗ n ⋅ H ( n − k ) ∗ n T = 0 1 ∗ ( n − k ) x_{1*n} · H_{(n-k)*n}^T=0_{1*(n-k)} x1nH(nk)nT=01(nk)

和一般的线性分组码不同的是其校验矩阵的稀疏性,即校验矩阵中只有数量很少的元素为“1”大部分都是“0”,这也是它名字“低密度奇偶校验码”的由来。

由于校验矩阵中1很少,所以1的分布就很重要。根据1的分布,LDPC码又可以分为正则LDPC码和非正则LDPC码。

正则LDPC码

Gallager 最早给出了正则 LDPC码的定义,具体来讲正则LDPC码的校验矩阵H满足下面三个条件:

  1. H的每行有 ρ \rho ρ个“1”
  2. H的每列有 λ \lambda λ个“1”, λ ≥ 3 \lambda≥3 λ3(这样具有较好的汉明距离特性)
  3. ρ \rho ρ λ \lambda λ都远小于H的行数(n-k)和列数(n)
    于是校验矩阵可以用 ( n , λ , ρ ) (n,\lambda,\rho) (n,λ,ρ)来表示,下图为一个(20,3,4)的LDPC码校验矩阵
    在这里插入图片描述

此时我们再回顾表达式 x 1 ∗ n ⋅ H ( n − k ) ∗ n T = 0 1 ∗ ( n − k ) x_{1*n} · H_{(n-k)*n}^T=0_{1*(n-k)} x1nH(nk)nT=01(nk)
我们可以发现:
矩阵H的每列各自包含 λ \lambda λ个“1”,表示每个码元变量受到相同数目的校验约束;
每行也各自包含 ρ \rho ρ个“1”,表示每个校验方程对相同数目的码元变量进行校验约束。

Tanner图结构与非正则LDPC码

思考到这一步,我们可以尝试把校验矩阵换一种方式表达出来。对于上图(20,3,4)的校验矩阵 H 15 ∗ 20 H_{15*20} H1520来说,15代表15个校验约束,20代表20个码元。
每个校验约束可以约束4个码元,每个码元受到3个校验约束。
我们不妨化画出下图
在这里插入图片描述
上面一行15个田字表示校验约束,下面一行20个圆形表示码元。

为什么这样表示呢?因为我们发现 ( n , λ , ρ ) (n,\lambda,\rho) (n,λ,ρ)只能用来表示校验矩阵H各列(行)中“1”的个数相同时的矩阵,倘若各列(行)中“1”的个数不相同,就不能如此表示,这就是非正则LDPC码。

Tanner图结构中可以用度分布序列来描述LDPC校验矩阵,本人对此知之甚少,有兴趣的朋友可以学习了解一下。《LDPC码的编译码原理及编码设计》-王鹏-西安电子科技大学

度分布序列来描述LDPC校验矩阵还有一个好处,因为LDPC码的译码采用的是基于置信传播的软输出 迭代译码算法,在译码过程中,信息的传递是在边上进行的,采用边的分布来描述LDPC码有助于分析其在给定译码算法下的实际性能和理论性能的上下界。

LDPC译码

LDPC码通用的一类译码算法,即所谓的消息传递算法(Message PassingAlgorithms)消息传递算法是一种选代译码算法(Ierative Algorithms ),它的名字来源于其运行机制,在该算法的每一轮选代过程中关于各个节点的置信消息需要在变量节点和校验节点之间传递。

例如由变量节点向校验节点传递的消息是基于变量节点对应的码元变量经过信道后的观察值和由邻接的校验节点在上一次迭代过程中传递过来的消息联合计算的。

由此衍生出的各种译码算法较为复杂,刚刚那篇论文和
这位朋友的博客介绍的比较清楚,推荐大家去学习一下。

引用:

  1. 王鹏. LDPC码的编译码原理及编码设计[D].西安电子科技大学,2004.
  2. https://blog.csdn.net/qq_37041791/article/details/119761628

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

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

相关文章

软件测试简单么,如何自学?

软件测试是不是简单其实需要自己学习了才知道,难易程度对于不同的人来说都是不一样的。都是需要实际去尝试了之后才知道。也要看是和谁对比,对于java这种来说肯定是容易多了。 软件测试其实算是互联网三大技术岗位中最轻松的工种,但是你学起…

idea中的Maven导包失败问题解决总结

idea中的Maven导包失败问题解决总结 先确定idea和Maven 的配置文件settings 没有问题 找到我们本地的maven仓库,默认的maven仓库路径是在\C:\Users\用户名.m2下 有两个文件夹,repositotry是放具体jar包的,根据报错包的名,找对应文…

重识html

html 重识html 万维网用url统一资源定位符标识分布因特网上的各种文档 各种概念 URL: 统一资源定位器 它是WWW的统一资源定位标志,就是指网络地址 在WWW上,每一信息资源都有统一的且在网上唯一的地址 网页: 由文字 图片 视频 音乐各种元素排列组…

面试热点题:stl中vector与list的优缺点对比、以及list的迭代器与vector迭代器的区别

vector的优点 下标随机访问 vector的底层是一段连续的物理空间,所以支持随机访问尾插尾删效率高 跟数组类似,我们能够很轻易的找到最后一个元素,并完成各种操作cpu高速缓存命中率高 因为系统在底层拿空间的时候,是拿一段进cpu&am…

软件测试5年,一路走来的艰辛路程

前言 不论你是什么时候开始接触测试这个行业的,你首先听说的应该是功能测试。通过一些测试手段来验证开发做出的代码是否符合产品的需求?当然你也有自己对功能测试的理解,但是最近两年感觉功能测试好像不太受欢迎,同时不少同学真的…

JavaEE简单示例——动态SQL之更新操作<set>元素

简单介绍: 在之前我们做的学生管理系统的时候,曾经有一个环节是修改学生的数据。我们在修改的时候是必须将student对象的三个属性全部填入信息,然后全部修改才可以,这样会造成一个问题就是在我们明明只需要修改一个属性的时候却要…

华为外包测试2年,不甘被替换,168天的学习转岗成正式员工

我25岁的时候,华为外包测试,薪资13.5k,人在深圳。 内卷什么的就不说了,而且人在外包那些高级精英年薪大几十的咱也接触不到,就说说外包吧。假设以我为界限,25岁一线城市13.5k,那22-24大部分情况…

干货|最全焊接不良汇总,你知道如何避免吗?

良好的焊接,是保证电路稳定持久工作的前提。下面给出了常见的8种焊接缺陷,看看你遇到过多少种?焊接中的常见问题一、锡珠形成原因:渣或杂质:在焊接过程中,如果焊接区域附近有过多的杂质或者脏污&#xff0c…

毕业论文图片格式、分辨率选择及高质量Word转PDF方法

已知1:毕业论文盲评通常需要提交PDF文件。 已知2:PDF文件太大可能会导致翻页卡顿以及上传盲评网站失败。 已知3:Word转PDF方法不当可能会导致图像模糊。 已知4:打印机分辨率通常为300dpi。 问题1:论文插图分辨率设置…

分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测

分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料分类效果 基本描述 1.Matlab实现WOA-CNN-LSTM多特征分类预测&…

关于一个Java程序员马上要笔试了,临时抱佛脚,一晚上恶补45道简单SQL题,希望笔试能通过

MySQL随手练 / DQL篇 MySQL随手练——DQL篇 题目网盘下载:https://pan.baidu.com/s/1Ky-RJRNyfvlEJldNL_yQEQ?pwdlana 初始数据 表 course 表 student 表 teacher 表 sc 答案 :) —> :( —> :) 1. 查询 "01"课程比"02"课程成绩高的学生…

VXLAN基础介绍

VXLAN简介 VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)采用MAC in UDP封装方式,是NVO3(Network Virtualization over Layer 3)中的一种网络虚拟化技术。 VXLAN特性在本质上属于一种VPN技…

MySQl高可用集群搭建(MGR + ProxySQL + Keepalived)

前言 服务器规划(CentOS7.x) IP地址主机名部署角色192.168.x.101mysql01mysql192.168.x.102mysql02mysql192.168.x.103mysql03mysql192.168.x.104proxysql01proxysql、keepalived192.168.x.105proxysql02proxysql、keepalived 将安装包 mysql_cluster_…

这套软件测试试卷能打90分,直接入职字节吧

目录 一.填空 二、 判断题(正确的√,错误的╳)共10分,每小题1分 三、数据库部分:(共15分) 四、设计题。本题共 1 小题,满分 20分 一.填空 1、 系…

让ArcMap变得更加强大,用python执行地理处理以及编写自定义脚本工具箱

文章目录一、用python执行地理处理工具1.1 例:乘以0.00011.2 例:裁剪栅格1.3 哪里查看调用某工具的代码?二、用python批量执行地理处理工具2.1 必需的python语法知识for循环语句缩进的使用注释的使用2.2 一个批处理栅格的代码模板三、创建自定…

数组中的各种迭代API方法手写

js的数组上有很多实用的方法,不论是在遍历数组上,还是在操作数组内元素上,它有许多不同的遍历数组的方法,同时它还有着可以直接操作数组中间元素的方法。 接下来,我来带大家手写数组里的 遍历方法 。 Array.forEach(…

Elasticsearch在Linux中的单节点部署和集群部署

目录一、Elasticsearch简介二、Linux单节点部署1、软件下载解压2、创建用户3、修改配置文件4、切换到刚刚创建的用户启动软件5、测试三、Linux集群配置1、拷贝文件2、修改配置文件3、分别修改文件所有者4、启动三个软件5、测试四、问题总结1、在elasticsearch启动时如果报错内存…

【黑盒模糊测试】路由器固件漏洞挖掘实战--AFL++ qemu_mode

前言 很久之前就想写AFL++的qemu_mode了,只是模糊测试专题的文章有些过于耗费时间,加上工作原因导致一直搁置。最近需要出差会用到黑盒模糊测试,所以就当做复习一遍,我记得Fuzzing 101也有一个qemu_mode的练习,有空的话下一篇文章更新吧~ 编写不易,如果能够帮助到你,希望…

金三银四软件测试面试如何拿捏面试官?【接口测试篇】

九、接口测试 9.1 接口测试怎么测 (jmeter版本) 首先开发会给我们一个接口文档,我们根据开发给的接口文档,进行测试点的分析,主要是考虑正常场景与异常场景,正常场景,条件的组合,…

前端vue实现获取七天时间和星期几功能

前端vue实现获取七天时间和星期几功能 功能展示代码 <div v-for"(item,index) in same_week" :class"[same_dayitem.date? activ :,dis]" click"select(item)" :keyindex><span>{{item.name}}</span><span>{{item.…