极化码的巴氏参数构造算法
极化码是由2008年土耳其毕尔肯大学教授ErdalArikan首次提出的,是目前唯一一种能够被严格证明“达到”信道容量的信道编码方法。
2016年在3GPP RAN1 #87次会议,确定Polar Code作为5G增强移动宽带场景下控制信道编码方案。
简言之,极化码就是一种信道的编码方式,由于其性能优越故被拿到5g标准中使用。极化码是已知的唯一一种能够被证明“达到”香农限的信道编码方法。
极化码在设计的时候不考虑最小距离特性,而是利用信道联合和信道分裂的过程来选择具体的编码方案。而且在译码时也是采用概率算法。
码长=N的极化码,它利用信道W的N个独立副本,进行信道联合和信道分裂,得到新的N个分裂之后的信道,随着码长的增加,分裂之后的信道将向两个极端发展:其中一部分分裂信道会趋近于完美信道,即信道容量趋近于1的无噪声;而另一部分分裂信道会趋近于完全噪声信道,即信道容量趋近于0的信道。
信道极化:信道在一系列的组合和分裂后一部分的信道的信道容量会增大,另一部分的信道容量会减小。这种现象就叫信道极化。(信道容量越大,该信道的噪声就会小,信道容量为1即无噪声信道,信道容量为0即全噪声信道)
极化码就是采用在信道容量大的信道用来传输数据比特信息,用信道容量小的信道来传输固定比特信息,固定比特通常为全0bit
原信道W的二进制输入对称容量记作I(W),那么当码长趋近于无穷的时候,信道容量趋近于1的分裂信道比例约为K=N×I(W):信息比特的数量,而信道容量趋近于0的比例约为N×(1−I(W)):冻结比特的数量。对于信道容量为1的可靠信道,可以直接放置消息比特而不采用任何编码,即相当于编码速率为R=1R=1;而对于信道容量为0的不可靠信道,可以放置发送端和接收端都事先已知的冻结比特,即相当于编码速率为R=0。那么当码长N→∞时,极化码的可达编码速率R=K/N=N×I(W)/N=I(W),即在理论上,极化码可以被证明是可达信道容量的。
对极化码可靠性度量有三个方法:巴氏参数法、密度进化法、高斯近似法。这里我们介绍巴氏参数法。
这里我们介绍巴氏参数构造算法,其计算公式如下
下列算法给出了BEC信道下求K个最可靠子信道的步骤 :
1.输入极化码长度N和BEC信道删除概率。
2.信道巴氏参数初始化
3.利用下列公式,计算出每一个子信道的可信度
将计算后的N个子信道的巴氏参数进行排序,将巴氏参数值最小的K个信道序号选择为信息位。一般情况下,1024位的极化码,取前512位不可靠的比特位做固定比特位,其他512位较可靠的比特位做信息比特位。
苦于在CSDN上难已找到该算法的代码(尤其是对于我这种只会C语言的人来说),所有这里将用C语言实现的算法摆出。(原理要是看不懂直接用就行)
jisuan_kexindu[1][1] = 0.5;//犯错概率0.5的前提下计算可信度for (int i = 1; i < 11; i++){int k = (int)pow(2.0, i - 1.0);for (int j = 1; j < k + 1; j++){float tmp = jisuan_kexindu[i][j];jisuan_kexindu[i + 1][2 * j - 1] = (float)pow(tmp, 2);jisuan_kexindu[i + 1][2 * j] = 2 * tmp - pow(tmp, 2);}}
我们使用的二维数组下标从0到10主要是计算方便起见。
for (int i = 1; i < 1025; i++){kexindu[i - 1] = jisuan_kexindu[11][i];bianhao[i - 1] = i - 1;}
之后我们将1024位码的可信度与其下标取出。
for (int i = 0; i < 1024; i++) //对每个比特的可信度进行排序for (int j = 0; j < 1023 - i; j++) if (kexindu[j] > kexindu[j + 1]){float t = kexindu[j]; kexindu[j] = kexindu[j + 1];kexindu[j + 1] = t;int tt = bianhao[j]; bianhao[j] = bianhao[j + 1];bianhao[j + 1] = tt;}
之后利用冒泡排序法对其进行排序,并将其对应的下标进行排序,这样主要是为了方便起见。
计算结果如下:
取出前100位可信度较低的比特位下标
极化码的巴氏参数构造算法相关推荐
- CTPN源码解析5-文本线构造算法构造文本行
文本检测算法一:CTPN CTPN源码解析1-数据预处理split_label.py CTPN源码解析2-代码整体结构和框架 CTPN源码解析3.1-model()函数解析 CTPN源码解析3.2-l ...
- 转载-极化码系列(4)-编码之极化信道可靠性估计
前言 由Arikan发明的Polar Code的经典编码算法已经在第二节基本阐述完毕,第三节则是对前文的举例.在编码实例中,有两个前提假设: 1.假设采用二进制删除信道 2.假设采用巴氏参数来评估各分 ...
- 极化码的matlab仿真(2)——编码
第二篇我们来介绍一下极化码的编码. 首先为了方便进行编码,我们需要进行数组的定义 signal = randi([0,1],1,ST); %信息位比特,随机二进制数 frozen = zeros(1, ...
- 转载-极化码系列(3)-极化码的编码实例
前言 在<Polar Code(2)编码原理>中详细阐述了Polar Code的编码原理.为了更好的理解编码的过程,本文将给出一个编码实例. 设码长 N = 8 N=8 N=8,信息比特数 ...
- matlab画极化码,极化码的matlab仿真(1)——参数设置
根据老师的安排,对于极化码的了解从仿真开始. 仿真的手段有很多种.可以利用C,C++,matlab等进行仿真的实现.其中matlab由于具有强大的函数库,和壮观的矩阵运算能力,被(我们老师课题组)看中 ...
- 用力和应变片计算弹性模量_弹性模量巴氏论文,关于应变电测法测定巴氏合金ZChSnSb11-6力学性能相关参考文献资料-免费论文范文...
导读:本文关于弹性模量巴氏论文范文,可以做为相关参考文献. (1. 山西三明重工机械制造有限公司,晋中 山西 030600:2. 太原科技大学机械工程学院,太原 山西 030024) 摘 要:针对锡基 ...
- 在灰度图像上进行Mean Shift迭代搜索目标 ,一维加权直方图 + 巴氏系数 + Mean Shift迭代
今天要给大家分享的是: 在灰度图像上进行Mean Shift迭代搜索目标 一维加权直方图+巴氏系数+Mean Shift迭代 关于 加权直方图.巴氏系数.Mean Shift迭代 这三者之间的关系请大 ...
- jquery 1.7.2源码解析(二)构造jquery对象
构造jquery对象 jQuery对象是一个类数组对象. 一)构造函数jQuery() 构造函数的7种用法: 1.jQuery(selector [, context ]) 传入字符串参数:检查该字符 ...
- 两个多元正态分布的KL散度、巴氏距离和W距离
©PaperWeekly 原创 · 作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 正态分布是最常见的连续型概率分布之一.它是给定均值和协方差后的最大熵分布(参考<&quo ...
- 基于极化码(Polar Code)的加密
一. 历史背景 香农曾提出,在任何信道上,可信通信的要求如下: 上式子中R代表码率,C代表信道容量.其中码率的计算公式如下: 上式子中K代表码字长度,N代表总长度.Erdal Arikan第一个发现能 ...
最新文章
- 前后端分离的探索(三)
- 浅析 Linux 初始化 init 系统:sysvinit
- CTF web题总结--http header 修改、cookie注入
- 重新分区_手机DATA重新分区教程(超详细)
- java多态强制类型转换_java多态和强制类型转换
- java解析xml实例——获取天气信息
- 笨方法“学习python笔记之转义序列
- python求解分支定界(branch-and-bound)问题使用pybnb基本架构
- wpf之blend之自定义最小化按钮
- 万能点位图软件_万能点位图软件_BoardViewer
- c语言计算函数零点个数,遗传算法-求函数零点-C语言代码.doc
- 信号处理:频域转时域
- 利用Bandzip批量解压缩文件
- Spring乱码问题解决
- python随机生成4位验证码并判断是否正确_python生成4位验证码
- 用 Adobe 设置 PDF 文件在文件管理器右侧预览窗格预览
- 明日之后最新服务器开服时间,明日之后新区开服时间 新区开放表[图]
- Java实现3DES加密解密(DESede/ECB/PKCS5Padding使用)
- 读书百客:《惜牡丹花二首》鉴赏
- html中seo三大标签,探索者SEO告诉你三大标签如何正确使用