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

Polar码译码C语言程序,任意码长的Polar码编码方法与流程本发明具体涉及一种任意码长的 Polar 码编码方法 背景技术 Polar 码 即 PolarCodes 极化码 是 2009 年由土耳其教授 E Arikan 提出的一种新型信道编码方案 该方法基于信道极化理论 是第一种能够通过严格的数学方法证明达到香农极限的编码方式 在进行极化编码之前对 N 2n 个独立的二进制输入信道 W 或者对于一个信道在不同时隙内反复使用 N 次 依据如图 1 所示的极化单元进行极化 在经过信道合

41a14eee1d845c9aea005fcd13df9409.gif

本发明具体涉及一种任意码长的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。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214221.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:43
下一篇 2026年3月18日 下午4:43


相关推荐

  • React生命周期钩子函数

    React生命周期钩子函数前言所谓的生命周期就是指某个事物从开始到结束的各个阶段 就好像是把人的出生到死亡分成一个个阶段 你肯定是在出生阶段起名字 而不会在成年或者死亡的阶段去起名字 当然在 React js 中指的是组件从创建到销毁的过程 React 实例从开始创建 初始化数据 编译模板 挂载 Dom 渲染 更新 渲染 卸载等一系列过程 我们称这是 React 的生命周期 各个阶段有相对应的事件钩子 用户可以在特定的阶段调用特定的方法 每个阶段组件内部的属性都是不一样的 所以一般特定的钩子做特定的事 一 React 生命周期

    2026年3月16日
    6
  • DropDownList的AppendDataBoundItems属性

    DropDownList的AppendDataBoundItems属性在ASP.NET 2.0中,可以在数据绑定时,通过设置DropDownList的AppendDataBoundItems属性为true,在数据绑定之前添加一个新的项目,并且这个新加的项目会保存在ViewState之中。下面就是一个实现的例子:    protected void Page_Load(object sender, EventArgs e)    …{        if 

    2022年10月16日
    5
  • navicat 激活码[免费获取][通俗易懂]

    (navicat 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月20日
    426
  • How to Select an Object-Relational Mapping Tool for .NET

    How to Select an Object-Relational Mapping Tool for .NET

    2021年7月22日
    72
  • 文本分类算法研究与实现

    文本分类算法研究与实现总结了文本分类中的常用算法,包括8种传统算法:k临近、决策树、多层感知器、朴素贝叶斯(包括伯努利贝叶斯、高斯贝叶斯和多项式贝叶斯)、逻辑回归和支持向量机概念及其实现代码

    2022年5月22日
    32
  • 在元素上写事件和addEventListener()的区别[通俗易懂]

    在元素上写事件和addEventListener()的区别[通俗易懂]在元素上写事件和addEventListent()的区别onclick添加事件不能绑定多个事件,后面绑定的会覆盖前面的。而addEventListener能添加多个事件绑定,按顺序执行。addEventListener方式,不支持低版本的IE。(attachEvent支持IE)。普通方式绑定事件后,不可以取消。addEventListener绑定后则可以用removeEvenListe…

    2022年7月27日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号