当前位置: 首页 > 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),极化码实现了高效的编码。

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

  1. 极化变换:应用一系列傅立叶变换和反傅立叶变换,对原始信道进行极化。
  2. 冻结比特选择:根据极化后的信道可靠性,选择信息比特和冻结比特的位置。
  3. 编码:将信息比特和冻结比特按选定的位置排列,进行极化编码。
  4. 解码:通过极化译码算法,从接收到的信号中恢复原始信息。
极化码的编码过程

极化码的编码过程可以通过一个简单的例子来说明。设定一个长度为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解码的基本步骤如下:

  1. 初始化:根据接收到的码字和极化矩阵计算初始的对数似然比(LLR)。
  2. 逐次解码:按照比特顺序进行逐次消除解码,每次解码一个比特,并根据之前解码的结果更新LLR值。
  3. 判决:对每个比特进行硬判决(即判断是0还是1)。

SC解码的优点是实现简单,计算复杂度较低(为O(N log N))。但其缺点是性能相对较差,尤其是在高噪声环境下。

2. 逐次消除列表(SCL)解码

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

SCL解码的基本步骤如下:

  1. 初始化:根据接收到的码字和极化矩阵计算初始的LLR。
  2. 逐次解码:按照比特顺序进行逐次消除解码,并在每次解码时保留若干候选路径。
  3. 路径选择:在每个解码步骤中,选择若干最有可能的路径,并丢弃其他路径。
  4. 最终判决:在解码结束时,根据路径的概率或度量选择最优路径。

SCL解码显著提高了解码性能,尤其是在选择较大列表长度(L)时。其计算复杂度为O(LN log N)。

3. 简化逐次消除(SSC)解码

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

SSC解码的基本步骤如下:

  1. 初始化:根据接收到的码字和极化矩阵计算初始的LLR。
  2. 识别特殊结构:在逐次消除解码过程中,识别极化码中的特殊结构(如全零块、全一块等)。
  3. 快速解码:对于识别出的特殊结构,直接应用预定义的解码规则进行快速解码。
  4. 逐次解码:对于非特殊结构,继续进行逐次消除解码。

SSC解码在减少复杂度的同时,保持了SC解码的性能,其计算复杂度一般为O(N log N)。

4. SCAN解码

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

SCAN解码的基本步骤如下:

  1. 初始化:根据接收到的码字和极化矩阵计算初始的LLR。
  2. 迭代消息传递:在比特节点之间传递消息,更新LLR值。每次迭代包括从左向右和从右向左两个方向的消息传递。
  3. 判决:在迭代结束后,对每个比特进行硬判决。

SCAN解码的计算复杂度取决于迭代次数和消息传递的复杂度,通常为O(N log N)到O(N^2)之间。

5. 置信传播(BP)解码

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

BP解码的基本步骤如下:

  1. 初始化:根据接收到的码字和极化矩阵构建初始的因子图,并计算初始的LLR。
  2. 迭代消息传递:在因子图的节点之间传递消息,更新每个比特的后验概率。
  3. 判决:在迭代结束后,根据后验概率对每个比特进行硬判决。

BP解码的性能通常优于SC和SCL解码,但其计算复杂度较高,通常为O(N log N)到O(N^2)之间。

2、仿真结果演示

3、关键代码展示

4、MATLAB 源码获取

  V

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

相关文章:

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

操作环境: MATLAB 2022a 1、算法描述 极化码(Polar Code) 极化码(Polar Code)是一种新型的信道编码技术,由土耳其裔教授Erdal Arıkan在2008年提出。极化码在理论上被证明能够在信道容量上达到香农极限…...

创新实训(十三) 项目开发——实现用户终止对话功能

思路分析: 如何实现用户终止AI正在进行的回答? 分析实现思路如下: 首先是在用户点击发送后,切换终止对话,点击后大模型终止对话,停止sse,不再接收后端的消息。同时因为对话记录存入数据库是后…...

基于Java+MySQL停车场车位管理系统详细设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…...

LeetCode 53.最大子数组和(dp)

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 子数组 是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输出:…...

IOS17闪退问题Assertion failure in void _UIGraphicsBeginImageContextWithOptions

最近项目更新到最新版本IOS17,发现一个以前的页面突然闪退了。原来是IOS17下,这个方法 UIGraphicsBeginImageContext(CGSize size) 已经被移除,原参数如果size为0的话,会出现闪退现象。 根据说明,上述方法已经被替换…...

float8格式

产生背景 在人工智能神经元网络中,一个参数用1字节表示即可,或者说,这是个猜想:因为图像的颜色用8比特表示就够了,所以说,猜想神经元的区分度应该小于256。 数字的分配 8比特有256个码位,分为…...

云效BizDevOps上手亲测

云效BizDevOps上手亲测 什么是云效项目协作Projex配置2023业务空间原始诉求字段原始诉求工作流创建原始诉求配置2023产品空间创建主题业务原始诉求关联主题配置2023研发空间新建需求需求关联主题 与传统区别云效开发流程传统开发流程云效BizDevOps 操作体验 什么是云效 在说到…...

亚太杯赛题思路发布(中文版)

导读: 本文将继续修炼回归模型算法,并总结了一些常用的除线性回归模型之外的模型,其中包括一些单模型及集成学习器。 保序回归、多项式回归、多输出回归、多输出K近邻回归、决策树回归、多输出决策树回归、AdaBoost回归、梯度提升决策树回归…...

【Linux】部署 GitLab 服务

1、配置实验环境 安装git apt install git 安装docker apt install docker 安装tree apt install tree 2、安装 Gitlab 下载官方库与安装包 下载官方库的安装脚本 curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bas…...

cs与msf权限传递以及mimikatz抓取win2012明文密码

启动服务端 进入客户端 建立监听 制作脚本 客户端运行程序 主机上线 打开msf 调用handler模块 创建监听 11.cs->msf 传递会话 12.传参完成 msf->cs会话传递 抓取密码(null) 修改注册表 shell reg add "HKEY_LOC…...

C++ 矩阵的最小路径和解法

描述 给定一个 n * m 的矩阵 a,从左上角开始每次只能向右或者向下走,最后到达右下角的位置,路径上所有的数字累加起来就是路径和,输出所有的路径中最小的路径和。 数据范围: 1≤𝑛,𝑚≤5001≤n,m≤500,矩阵中任意值都满足 0≤𝑎𝑖,𝑗≤1000≤ai,j​≤100 要求…...

http服务网络请求如何确保数据安全(含python示例源码)

深度学习类文章回顾 【YOLO深度学习系列】图像分类、物体检测、实例分割、物体追踪、姿态估计、定向边框检测演示系统【含源码】 【深度学习】物体检测/实例分割/物体追踪/姿态估计/定向边框/图像分类检测演示系统【含源码】 【深度学习】YOLOV8数据标注及模型训练方法整体流程…...

网络构建关键技术_2.IPv4与IPv6融合组网技术

互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。目前,IPv6已经成为唯一公认的下一代互联网商用解决方案&#…...

数仓建模—数据生命周期管理

数仓建模—数据生命周期管理 数据生命周期管理 (DLM) 是一种在从数据输入到数据销毁的整个生命周期内管理数据的方法。 数据根据不同的条件分处不同的阶段,随着其完成不同的任务或满足特定要求而逐次经历这些阶段。 一个出色的 DLM 流程提供针对企业数据的结构和组织,帮助实…...

【INTEL(ALTERA)】Nios II软件开发人员手册中设计位置的错误示例

目录 说明 解决方法 说明 Nios II软件开发人员手册正确无误 请参阅 Nios 中包含的Nios II硬件设计示例 II 嵌入式设计套件 (EDS)。提供设计示例 设计上 Altera网站的示例页面。 Nios II软件开发人员手册正确无误 请参阅 创建本应用程序和创建本 bsp …...

jeecg导入excel 含图片(嵌入式,浮动式)

jeecgboot的excel导入 含图片(嵌入式,浮动式) 一、啰嗦二、准备三、 代码1、代码(修改覆写的ExcelImportServer)2、代码(修改覆写的PoiPublicUtil)3、代码(新增类SAXParserHandler&a…...

GPT-5 一年半后发布?对此你有何期待?

GPT-5 一年半后发布?对此你有何期待? IT之家6月22日消息,在美国达特茅斯工程学院周四公布的采访中,OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布,给出了肯定答案并表示将在一年半后发布。此外,…...

SHELL脚本学习(十二)sed进阶

一、多行命令 概述 sed 编辑器的基础命令都是对一行文本进行操作。如果要处理的数据分布在多行中,sed基础命令是没办法处理的。 幸运的是,sed编辑器的设计人员已经考虑了这个问题的解决方案。sed编辑器提供了3个处理多行文本的特殊命令。 命令描述N加…...

【python】一篇文零基础到入门:快来玩吧~

本笔记材料源于: PyCharm | 创建你的第一个项目_哔哩哔哩_bilibili Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法-CSDN博客 0为什么安装python和pycharm? 不同于c,c&#xff0…...

Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六)

Python武器库开发-武器库篇之Thinkphp5 SQL注入漏洞(六十六) 漏洞环境搭建 这里我们使用Kali虚拟机安装docker并搭建vulhub靶场来进行ThinkPHP漏洞环境的安装,我们进入 ThinkPHP漏洞环境,可以 cd ThinkPHP,然后通过 …...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

LLM基础1_语言模型如何处理文本

基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...

今日科技热点速览

🔥 今日科技热点速览 🎮 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售,主打更强图形性能与沉浸式体验,支持多模态交互,受到全球玩家热捧 。 🤖 人工智能持续突破 DeepSeek-R1&…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...

MySQL 主从同步异常处理

阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示&#xff…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...