当前位置: 首页 > news >正文

【MATLAB源码-第231期】基于matlab的polar码编码译码仿真,对比SC,SCL,BP,SCAN,SSC等译码算法误码率。

操作环境:

MATLAB 2022a

1、算法描述

极化码(Polar Code)
极化码(Polar Code)是一种新型的信道编码技术,由土耳其裔教授Erdal Arıkan在2008年提出。极化码在理论上被证明能够在信道容量上达到香农极限,因此引起了广泛的关注和研究。极化码的核心思想是通过极化变换将原本均匀的信道转换为完全可靠和完全不可靠的两类,从而实现高效的信息传输。

极化码的基本原理
极化码的编码过程基于一个称为极化变换(channel polarization)的现象。具体来说,极化变换利用了一种特定的线性变换,将多个独立且等价的二进制离散记忆信道(B-DMC)转化为新的信道,这些新信道中的一些变得完全可靠,而另一些则变得完全不可靠。

在n次编码中,极化码将n个原始信道极化为2^n个信道,其中部分信道变得接近完全可靠(即误码率接近零),其余信道则变得接近完全不可靠(即误码率接近0.5)。通过选取这些完全可靠的信道传输信息比特,而将完全不可靠的信道用于传输固定的冻结比特(预设值,通常为0),极化码实现了高效的编码。

极化码的编码和解码过程主要包括以下几个步骤:

极化变换:应用一系列傅立叶变换和反傅立叶变换,对原始信道进行极化。
冻结比特选择:根据极化后的信道可靠性,选择信息比特和冻结比特的位置。
编码:将信息比特和冻结比特按选定的位置排列,进行极化编码。
解码:通过极化译码算法,从接收到的信号中恢复原始信息。
极化码的编码过程
极化码的编码过程可以通过一个简单的例子来说明。设定一个长度为N的码字,其中N=2^n。首先,定义一个基础的极化矩阵F:

对于任意N=2^n,极化矩阵可以通过Kronecker积(Kronecker product)递归计算得到:

通过极化矩阵F的递归构造,可以得到所需的极化矩阵GN。

例如,当N=4时,极化矩阵为:

编码过程通过将信息比特和冻结比特按指定位置排列,并与极化矩阵相乘来完成。

极化码的解码算法
极化码的解码主要有以下五种常见方法:SC、SCL、SSC、SCAN和BP解码。每种方法都有其独特的优点和适用场景。

1. 逐次消除(SC)解码
逐次消除(Successive Cancellation, SC)解码是极化码的基本解码算法。它按照比特的顺序逐个进行解码,每解码一个比特就利用已解码的比特信息来帮助解码下一个比特。

SC解码的基本步骤如下:

初始化:根据接收到的码字和极化矩阵计算初始的对数似然比(LLR)。
逐次解码:按照比特顺序进行逐次消除解码,每次解码一个比特,并根据之前解码的结果更新LLR值。
判决:对每个比特进行硬判决(即判断是0还是1)。
SC解码的优点是实现简单,计算复杂度较低(为O(N log N))。但其缺点是性能相对较差,尤其是在高噪声环境下。

2. 逐次消除列表(SCL)解码
逐次消除列表(Successive Cancellation List, SCL)解码是在SC解码的基础上引入了列表跟踪机制,以提高解码性能。在SCL解码中,保持多个候选路径(即候选的比特序列),并在每一步选择若干最有可能的路径继续解码。

SCL解码的基本步骤如下:

初始化:根据接收到的码字和极化矩阵计算初始的LLR。
逐次解码:按照比特顺序进行逐次消除解码,并在每次解码时保留若干候选路径。
路径选择:在每个解码步骤中,选择若干最有可能的路径,并丢弃其他路径。
最终判决:在解码结束时,根据路径的概率或度量选择最优路径。
SCL解码显著提高了解码性能,尤其是在选择较大列表长度(L)时。其计算复杂度为O(LN log N)。

3. 简化逐次消除(SSC)解码
简化逐次消除(Simplified Successive Cancellation, SSC)解码是一种优化的SC解码方法,利用了极化码结构中的冗余性,以减少解码复杂度。SSC解码通过识别特殊的码块结构,直接对这些结构进行快速解码。

SSC解码的基本步骤如下:

初始化:根据接收到的码字和极化矩阵计算初始的LLR。
识别特殊结构:在逐次消除解码过程中,识别极化码中的特殊结构(如全零块、全一块等)。
快速解码:对于识别出的特殊结构,直接应用预定义的解码规则进行快速解码。
逐次解码:对于非特殊结构,继续进行逐次消除解码。
SSC解码在减少复杂度的同时,保持了SC解码的性能,其计算复杂度一般为O(N log N)。

4. SCAN解码
SCAN解码是一种迭代解码方法,类似于LDPC码的消息传递算法。SCAN解码通过多次迭代在比特节点之间传递消息,以提高解码性能。

SCAN解码的基本步骤如下:

初始化:根据接收到的码字和极化矩阵计算初始的LLR。
迭代消息传递:在比特节点之间传递消息,更新LLR值。每次迭代包括从左向右和从右向左两个方向的消息传递。
判决:在迭代结束后,对每个比特进行硬判决。
SCAN解码的计算复杂度取决于迭代次数和消息传递的复杂度,通常为O(N log N)到O(N^2)之间。

5. 置信传播(BP)解码
置信传播(Belief Propagation, BP)解码是一种基于图模型的迭代解码方法,适用于极化码的高效解码。BP解码通过在极化码的因子图上进行消息传递,以估计每个比特的后验概率。

BP解码的基本步骤如下:

初始化:根据接收到的码字和极化矩阵构建初始的因子图,并计算初始的LLR。
迭代消息传递:在因子图的节点之间传递消息,更新每个比特的后验概率。
判决:在迭代结束后,根据后验概率对每个比特进行硬判决。
BP解码的性能通常优于SC和SCL解码,但其计算复杂度较高,通常为O(N log N)到O(N^2)之间。

2、仿真结果演示

3、关键代码展示

4、MATLAB 源码获取

  V

点击下方名片关注公众号获取

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • C++ 面试模拟02
  • 【AI创作组】Matlab中进行符号计算
  • 【目标检测】隐翅虫数据集386张VOC+YOLO
  • 【ArcGIS微课1000例】0122:经纬网、方里网、参考格网绘制案例教程
  • UE4_后期处理七—仿红外线成像效果
  • MIME 类型
  • Ubuntu环境切换到服务器某个用户后source等命令和Tab快捷补全都用不了了,提示没找到,但root用户可以
  • java并发编程笔记 之 线程和进程
  • Unity 的Event的Use()方法
  • 太速科技-383-基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡
  • Java后端中的复杂查询优化:索引设计与SQL调优的结合
  • 个人计算机与网络的安全
  • 【JavaScript】LeetCode:51-55
  • Vue实战教程:手动封装一个全局可自定义图标提示组件
  • 企业如何高效应对多类型知识产权事务的复杂挑战?
  • JS 中的深拷贝与浅拷贝
  • [数据结构]链表的实现在PHP中
  • Angular 响应式表单 基础例子
  • Java读取Properties文件的六种方法
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Spring核心 Bean的高级装配
  • 第13期 DApp 榜单 :来,吃我这波安利
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 技术发展面试
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 线上 python http server profile 实践
  • 白色的风信子
  • MPAndroidChart 教程:Y轴 YAxis
  • 阿里云重庆大学大数据训练营落地分享
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • #07【面试问题整理】嵌入式软件工程师
  • %check_box% in rails :coditions={:has_many , :through}
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (3)STL算法之搜索
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第14章泛型第2节(泛型类的类构造函数)
  • (Java)【深基9.例1】选举学生会
  • (k8s中)docker netty OOM问题记录
  • (八)Spring源码解析:Spring MVC
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (一)appium-desktop定位元素原理
  • (一)UDP基本编程步骤
  • (转载)利用webkit抓取动态网页和链接
  • .Family_物联网
  • .Net mvc总结
  • .NET 项目中发送电子邮件异步处理和错误机制的解决方案
  • .NET 药厂业务系统 CPU爆高分析
  • .Net的DataSet直接与SQL2005交互
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • /boot 内存空间不够