本发明具体涉及一种任意码长的Polar码编码方法。

背景技术:

Polar码,即Polar Codes,极化码,是2009年由土耳其教授E.Arikan提出的一种新型信道编码方案,该方法基于信道极化理论,是第一种能够通过严格的数学方法证明达到香农极限的编码方式。在进行极化编码之前对N=2n个独立的二进制输入信道W(或者对于一个信道在不同时隙内反复使用N次)依据如图1所示的极化单元进行极化,在经过信道合并(Channel Combination)和信道分裂(Channel Splitting)操作之后得到N个相互关联的极化信道,并且在信道极化之后,所有分裂子信道的信道容量都会发生变化,一部分增大趋近于1,我们称之为无噪声信道。另一部分趋近于0,我们称之为纯噪声信道。信道极化过程如图2所示。码长N为1024的信道极化后的信道容量分布也在图3中给出。

传统极化码由Kronecker幂构造,这种构造方式只能构造码长为2n(n=1,2,...)的Polar码,尽管其他码长的Polar码可以通过利用BCH等其他极化核来进行构造,但是码长仍然受限于核长的幂次,且这种构造方式的译码结构较为复杂。这大大影响了Polar码在数字通信领域的应用灵活性。而目前的部分通过删除部分码字比特的方式来实现任意码长的构造方法虽然实现了任意码长的构造,但是其译码误码率却大幅增高,严重损失了通信系统的性能。

技术实现要素:

本发明的目的在于提供一种使用方便且不需要进行码字删除的任意码长的Polar码编码方法。

本发明提供的这种任意码长的Polar码编码方法,包括如下步骤:

S1.根据编码需求,确定编码参数;

S2.首先对所有用于传输信息的子信道进行标记,然后对特定信噪比下的若干个子信道的信道容量进行排序,并将排序后的信道索引序列进行存储;

S3.设定极化核,并根据设定的极化核及编码参数计算中间矩阵和需要删除的行数;

S4.根据步骤S3得到的中间矩阵和需要删除的行数,计算得到初始约化矩阵;

S5.对步骤S4得到的初始约化矩阵进行判定和修正,从而得到新的极化矩阵;

S6.根据步骤S5得到的新的极化矩阵,构造信息序列并进行极化编码,从而得到最终的编码。

步骤S1所述的确定编码参数,具体包括信息位长度K、预编码长度N和编码长度M;预编码长度为通过传统极化编码所需要的固定编码长度;K<M<N,且N=2n,为向上取整函数。

步骤S2所述的对所有用于传输信息的子信道进行标记,对特定信噪比下的若干个子信道的信道容量进行排序,并将排序后的信道索引序列进行存储,具体为将所用于传输信息的预子信道标记为W1,W2,...,WN,采用巴氏参数法对特定信噪比下N个子信道的信道容量进行排序,并将排序后的信道索引序列存为信道容量矩阵p=[Wi Wj Wm … Wz]。

步骤S3所述的设定极化核,并根据设定的极化核计算中间矩阵和需要删除的行数,具体为采用如下步骤计算中间矩阵和需要删除的行数:

A.设定极化核对F进行n次Kronecker幂计算从而得到极化矩阵

B.将极化矩阵G进行反序重排得到中间矩阵

C.计算约化矩阵需要删除的行数t=N-M。

步骤S4所述的根据步骤S3得到的中间矩阵和需要删除的行数,计算得到初始约化矩阵,具体为采用如下步骤计算得到初始约化矩阵:

a.对于中间矩阵GN,计算列权重为1的列数m和需要约化的行列数t,并对m和t进行比较:

若m>t,则根据信道容量矩阵p中信道容量大小,在列权重为1的m列中,选取t列,对其中元素1所在的行列进行删除;选取和删除的标准为:依据矩阵p中信道容量大小顺序,删除信道容量小的索引号所对应的列;

若m=t,则删除列权重为1的m列中,元素1所在的行列;

若m<t,,则列权重为1的m列中,删除元素1所在的行列,并再一次进行极化矩阵列权重的计算,删除剩下的权重为1的列,并保证总删除的列数为t;删除的标准为:信道容量小的优先删除;

b.得到初始约化矩阵GM'。

步骤S5所述的对步骤S4得到的初始约化矩阵进行判定和修正,从而得到新的极化矩阵,具体为采用如下规则进行判定和修正:

判断初始约化矩阵GM'的最后一列的最后一个元素是否为1:

若是,则认定步骤S4得到的初始约化矩阵为新的极化矩阵GM;

若不是,则选择初始约化矩阵GM'中,列元素最后一个为1且权值最小的列,将该列与最后一列交换列位置,从而生成新的极化矩阵GM。

步骤S6所述的根据步骤S5得到的新的极化矩阵,构造信息序列并进行极化编码,从而得到最终的编码,具体为采用如下步骤构造信息序列和进行极化编码:

1)在信道容量矩阵p中删除t列的列索引,得到矩阵p';

2)在矩阵p'中选取信道容量最大的K个作为信息位;

3)构造信息序列

4)进行极化编码编码长度为M;GM为步骤S5得到的新的极化矩阵。

本发明提供的这种任意码长的Polar码编码方法,不需要进行码字删除操作,从极化矩阵的约化来进行编码,使得Polar码的编码器输出的编码序列可以是任意码长,提高了Polar码在5G应用中应用灵活性;并且,本发明结合PCC-0信道挑选算法,在编码器和译码器都已知的位置矩阵p中较差信道所映射的列进行约化操作,尽量避免了信息位的漏失,保证了信息的有效传送同时本发明在译码端对于未知比特的似然信息已知,避免了传统删除码字方法利用先验信息来估计未知比特似然信息的问题,从而降低了译码误码率,提升了通信系统的性能,具有更高的数字通信系统应用性。

附图说明

图1为现有技术的极化码的基本极化单元示意图。

图2为现有技术的信道极化现象的极化过程示意图。

图3为现有技术的依据信道极化理论当码长N为1024的信道容量分布图。

图4为本发明方法的方法流程示意图。

图5为本发明方法的约化矩阵约化列(N=8,M=5)的示意图。

具体实施方式

如图4所示为本发明方法的方法流程示意图:本发明提供的这种任意码长的Polar码编码方法,包括如下步骤:

S1.根据编码需求,确定编码参数;具体包括信息位长度K、预编码长度N和编码长度M;预编码长度为通过传统极化编码所需要的固定编码长度;K<M<N,且N=2n,为向上取整函数;

S2.首先对所有用于传输信息的子信道进行标记,然后对特定信噪比下的若干个子信道的信道容量进行排序,并将排序后的信道索引序列进行存储。具体为将所用于传输信息的预子信道标记为W1,W2,...,WN,采用巴氏参数法对特定信噪比下N个子信道的信道容量进行排序,并将排序后的信道索引序列存为信道容量矩阵p=[Wi Wj Wm … Wz];

S3.设定极化核,并根据设定的极化核及编码参数计算中间矩阵和需要删除的行数;具体为采用如下步骤计算中间矩阵和需要删除的行数:

A.设定极化核对F进行n次Kronecker幂计算从而得到极化矩阵

B.将极化矩阵G进行反序重排得到中间矩阵

C.计算约化矩阵需要删除的行数t=N-M;

S4.根据步骤S3得到的中间矩阵和需要删除的行数,计算得到初始约化矩阵;具体为采用如下步骤计算得到初始约化矩阵:

a.对于中间矩阵GN,计算列权重为1的列数m和需要约化的行列数t,并对m和t进行比较:

若m>t,则根据信道容量矩阵p中信道容量大小,在列权重为1的m列中,选取t列,对其中元素1所在的行列进行删除;选取和删除的标准为:依据矩阵p中信道容量大小顺序,删除信道容量小的索引号所对应的列;

若m=t,则删除列权重为1的m列中,元素1所在的行列;

若m<t,,则列权重为1的m列中,删除元素1所在的行列,并再一次进行极化矩阵列权重的计算,删除剩下的权重为1的列,并保证总删除的列数为t;删除的标准为:信道容量小的优先删除;

b.得到初始约化矩阵GM′;

S5.对步骤S4得到的初始约化矩阵进行判定和修正,从而得到新的极化矩阵;具体为采用如下规则进行判定和修正:

判断初始约化矩阵GM'的最后一列的最后一个元素是否为1:

若是,则认定步骤S4得到的初始约化矩阵为新的极化矩阵GM;

若不是,则选择初始约化矩阵GM'中,列元素最后一个为1且权值最小的列,将该列与最后一列交换列位置,从而生成新的极化矩阵GM;

S6.根据步骤S5得到的新的极化矩阵,构造信息序列并进行极化编码,从而得到最终的编码;具体为采用如下步骤构造信息序列和进行极化编码:

1)在信道容量矩阵p中删除t列的列索引,得到矩阵p';

2)在矩阵p'中选取信道容量最大的K个作为信息位;

3)构造信息序列

4)进行极化编码编码长度为M;GM为步骤S5得到的新的极化矩阵。

以下,结合一个具体实施例,对本发明方法进行进一步说明:

在构造极化码时,若码长不为2的幂次,则将极化矩阵按照列权重排比以及结合信道容量索引排序对极化矩阵进行约化,使生成矩阵在较小性能损失的情况下被约化为大小为码长的方阵,从而进行极化编码,实现任意码长Polar编码。

确定编码参数,其中主要包括信息位长度K=4,预编码长度N=8,以及编码长度M=5,它们之间满足数学关系:K<M<N,且N=2n,为向上取整函数;本步骤为将信息位4序列编码为所需长度的二进制编码序列;

将所用于传输信息的预子信道标记为W1,W2,W3,W4,W5,W6,W7,W8,并采用PCC-0(巴氏参数法)对特定信噪比下8个子信道的信道容量进行排序,并将排序后的信道索引序列标记为矩阵p=[W3 W1 W5 W4 W8 W2 W6 W7];

设定极化核对F进行n次Kronecker幂计算得到G:

对极化矩阵G进行反序重排得到G8:

计算t=N-M=3;

经过计算,最后一列的权重为1标注为①,在构造码长M=7的Polar码时这是需要删除的第一个索引指标,删除这列中元素1所在的行和列得到M=7的生成矩阵,删除之后经过计算,此时7×7矩阵中列权重为1的有三列,分别是第4、6、7列,此时我们对比信道容量矩阵p发现信道容量之间的关系是第7列>第6列>第4列,因此当我们构造码长M=6的Polar码时删除第4列中元素1对应的行和列,标注为②,构造码长M=5时删除第6列中元素1对应的行和列,标注为③;

在删除之后得到的初始约化矩阵为G5'的最后一列的最后一个元素并不是1,因此,如图5所示,选择矩阵G5'列元素最后一位为1,且权值最小的列(第二列),与最后一列交换列位置得到极化矩阵即为任意码长Polar码的生成矩阵GM;

在除删除t=3列的列索引之外的矩阵p中选取信道容量最大的K=4个进行信息位的存放。因此在图5中在信道索引为3、1、5、4放置信息位,其余M-K=1个位置为冻结位,构造信息序列进行极化编码编码长度为任意码长M;本次具体实施方式中的M=5。

Polar码译码C语言程序,任意码长的Polar码编码方法与流程相关推荐

  1. 编c语言程序 任意输入一个长方体的长,宽,高,计算体积.,C语言程序,由键盘任意输入一个长方体的长.宽.高,计算体积....

    用C语言编写程序,输入一个正整数n(1 #include"stdio.h"intmain(){\x09inti,j,n;\x09inta[12];\x09intmin,mx;\x0 ...

  2. 紫微排盘源码php,易语言紫微斗数排盘模块源码

    下面我们对易语言紫微斗数排盘模块源码文件阐述相关使用资料和易语言紫微斗数排盘模块源码文件的更新信息. 易语言紫微斗数排盘模块源码 易语言紫微斗数排盘模块源码 系统结构:紫微斗数排盘,GetStarLe ...

  3. 指南针c语言程序,指南针指标公式原码

    1,CYW主力控盘VAR1:=CLOSE-LOW; VAR2:=HIGH-LOW; VAR3:=CLOSE-HIGH; VAR4:=IF(CLOSE>=0,(VAR1/VAR2+VAR3/VAR ...

  4. 2022新版驾考技巧驾考培训驾考技巧考试培训系统源码/题库小程序/题库系统源码/驾考答题系统源码

     品牌:无  语言:php  大小:998.3M  类型:驾考答题系统源码  支持:H5  欢迎关注(发消息才不限制),私信,领取  源码简介: 这套是我某站买的一套运营级系统,之前我在运营,现在没做 ...

  5. 汉字字符内码查询_VB小程序,字符与内码

    VB小程序,关注我有更多的有趣的VB小程序 1.字符的十进制内码 控件:一个TextBox文本框,一个ListBox列表框,一个CommandButton命令按钮 界面: 代码: Private Su ...

  6. C语言项目源码,C语言源码大全

    一.C语言源码大全 C语言是一门通用计算机编程语言,广泛应用于底层开发.C语言的设计目标是提供一种能以简易的方式编译.处理低级存储器.产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言.尽管 ...

  7. Polar SC的C语言实现之译码篇

    Part1.SC编码与比特传输过程回顾 经过编码和调制后,信息序列才得以传输,传输过程中会受到各种各样的噪声(在此指电磁波)干扰,每个比特会发生不同程度的变化,在传送到用户端前,要把比特序列还原成原码 ...

  8. polar码译码——快速SC译码算法

    一.四种子码 1.码率零(Rate0,R0) 如果一个长为N=2^n的极化码没有信息比特,只有冻结比特,则称谓R0极化码,这种极化码虽然不携带信息,但他却可能作为一个子极化码来使用. 2.重复码(Re ...

  9. 怎样用才c语言定义一个三位数,怎样编写一个c语言程序计算任意输入一个3位数的整数的各位数字之和。要求主函数包括输入输出和调用该函数。...

    点击查看怎样编写一个c语言程序计算任意输入一个3位数的整数的各位数字之和.要求主函数包括输入输出和调用该函数.具体信息 答:#include void main(){ int a,sum=0; pri ...

最新文章

  1. Airlaunch 快捷设置代码分享
  2. 如何成为一名对话系统工程师
  3. mysql 配置路径
  4. java注释是用什么标签_java的注释标签是什么?
  5. 乐鑫wifi模块二次开发_米家部分智能硬件拆解,ZigBee/WIFI模块分析及二次开发
  6. Java中怎样遍历两个Date日期之间的每一天
  7. wxWidgets:wxSplashScreen 示例
  8. 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
  9. PyTorch框架学习九——网络模型的构建
  10. 27、简述redis的有哪几种持久化策略及比较?
  11. 【Flink】Flink 写入 AnalyticDB MySQL
  12. systemtap gui
  13. Dirichlet energy and the Laplace equation
  14. java多分支流程图_Java 流程控制 之 分支结构(条件判断)
  15. PHP时间戳与日期之间转换
  16. 剩余方差matlab,matlab 统计基本函数 var方差
  17. 只要方向正确,路远不是事
  18. SAP MM 增值税改革导致采购业务的变化
  19. 计算机有哪些专业技能,简历计算机技能有哪些
  20. 24只胡萝卜的管理精神(节录)

热门文章

  1. java 输出乘法口诀第一列_java输出乘法口诀表
  2. java商品管理系统
  3. Java类(无参、有参构造方法、静态变量)
  4. rundown of the Objective-C Type Encodings
  5. 防火墙与入侵检测系统
  6. 业务入云是一条不归路
  7. 视频剪辑学习笔记(1)
  8. 新概念乐理教程——五线谱、简谱—起学
  9. 《炬丰科技-半导体工艺》SC1/SC2蚀刻后Si表面的分析
  10. MATLAB快速读取STL文件