================================================算法
首先自做多情的说一句——“抱歉!”数据库
古语“有志者、事竟成”,是说有志向的人最终都可以成事。想到这句话我很惭愧,我竟然连这样一件小事都没法坚持不懈的完成,这个系列的博客我一拖再拖,一个多月里居然再没有更新。虽然博客鲜有看客垂阅,可是这半途而废的事实倒是明显的。痛定思痛,我决定老老实实更完。算是亡羊补牢,作到善始善终吧。less
================================================性能
---内容开始--编码
上一节,咱们介绍了SC译码过程当中的两个解码特例——u1和u2,经过这两例解码方案的介绍,咱们对于利用Arikan递推公式进行串行消除解码的过程有了一个初步的认识,接下来咱们的任务在于由特殊到通常,概括出适用于全部解码器节点的解码方案,并给出相应的matlab代码。3d
咱们先来从新观察蝶形解码图:code
根究u一、u2的解码经验,咱们能够将解码过程做以下概括:blog
① 判断要解出的节点为上节点仍是下节点,若为上节点则进行步骤②,不然进行步骤③;ci
② 根据解码图中先后节点的坐标关系,找到该节点所开启的两个节点,分别判断这两个节点是否被解出,若是未解出回到步骤①,不然直接利用上节点计算公式求得该节点似然值。input
③ 判断相应上节点是否解出,若是未解出,执行步骤②,不然执行步骤④计算指数项;
(根据咱们屡次提到的原则——左上节点和左下节点老是同时被解出,通常状况下在求解下节点的时候,相应的上节点已经解出。)
④ 咱们先来复习一下什么是指数项
如上图为Arikan译码递推公式。对于蝶形的左下节点的求解,在获得左上节点似然值的基础上使用第二个公式。其中,指数项为。
【关于指数项计算的专业内容,读者可参考论文《极化码编码与译码算法研究》...王继伟...第3.3.1.3节】
这个指数项在随着迭代N-->N/2-->N/4-->...将发生变化。因为博主水平有限,没法很好的表述推导过程,这里偷个懒,直接将结论写在下面。读者若是对于结论的导出有更深刻的须要,请移步上述论文相关章节。
如上图所示为n=3,N=8时的解码图,不一样的是,咱们给每个节点提供了第三个标签。(除去第一列和最后一列)将节点所在行数减一后转化为长度为n的二进制数,自第二行开始将二进制数用斜杠 ‘ / ’ 加以分割,斜杠放置位置的规律显然可见。通过这样的处理之后,咱们能够观察一个很是明显的现象,观察每一个斜杠后的比特,比特为0表明该节点为上节点,比特为1表明该节点为下节点。
下面来关注指数项的求解。观察斜杠先后的比特:
设当前节点坐标为(i,j),若当前节点未左上蝶形,则这个节点开启的两个节点的坐标为(i,j+1)和(i+N/2j,j+1)。若为左下节点,则这两个节点开启的两个节点坐标为(i,j+1)和(i-N/2j,j+1))
所以,利用反推的道理,对于所求解的节点 (i,j) ,从斜杠处开始,自右向左,遇到比特“0”则向左寻找一位 (i,j-1),遇到比特“1”则向左上寻找 (i-N/2j,j-1)。
下面,咱们以节点26为例详细说一下。该节点的三个标签分别为“26”,,“10/1”。第一个标签指代该节点的求解顺序,第二个标签描述该节点的似然值经过计算
获得,其中
即为指数项。经过第三个标签,咱们能够知道为何指数项是
。观察“10/1”,斜杠前有两位“10”。首先,咱们来判断,节点26由哪个节点所开启,自右向左,第一位遇到“0”,往左移动一位;第二位遇到“1”,往左上寻找。最后发现找到的是节点21,观察发现此时已经解出的解码器为
。获得这一信息后,咱们来求解指数项,自左向右,第一位遇到“1”,抽取偶数位组成向量(u2,u4);第二位遇到“0”,抽取奇数位——u2,偶数位——u4,按位异或——
。
对于解码器中全部的节点,在以上办法的指导下,经过坐标变换和少许的位运算,便可在必要状况下求解相应节点的指数项。
求得指数项以后返回文章最开始的流程之中,咱们能够依次求解出解码图中全部节点的似然值,最后对解码器进行似然判决(包含硬判决与软判决)。
判决后所获得的比特流即为原比特流在极化码系统下仿真获得的结果,经过逐位比对,统计传输先后的比特差别,咱们能够获得一系列的误码指标来表征系统性能。
咱们来回顾一下本节中的重点:
一、本节,咱们旨在解决如何求解解码图中的节点似然值。
二、咱们根据似然值计算递推公式,将节点分为上节点和下节点,上节点能够直接求解,下节点须要计算指数项。
三、经过判断先后节点坐标关系以及定义“1”、“0”两种位运算,咱们实现了求解所需任意节点的指数项。
四、经过似然判决以及统计比特误码率,咱们获得了系统的仿真性能。
关于极化码,一些入门的论文以下:
【1】Channel polarization: A method for constructing capacity-achieving codes for symmetric binary-input memoryless channels.做者 Erdal Arıkan。Arikan教授是极化码的缔造者,这篇论文发表在IEEE上,也是第一篇对极化码及相关理论进行系统而详尽阐明的权威论文。
【2】极化码编码与译码算法研究.做者 王继伟。对于不少人来讲,英文文献阅读起来比较吃力,好在一些质量较高的中文文献中对极化码有很是详尽的介绍,其内容之丰富,足以做为研究Arikan论文的有力辅助。
【3】极化码的译码算法研究及其应用.做者 张亮。这是一篇博士学位论文,内容充实详尽、专业严谨,文末对于极化码存在的一些问题进行了分析和展望,颇有启发性。
这些文章在知网、万方等数据库中都可获取,在极化码的研究论文中,这三篇只是沧海一粟,还有不少国内外学者的文章值得借鉴,再也不啰嗦列举。
这是本系列的最后一篇文章。开始时雄心壮志,结束却时草草收笔,未免有些遗憾。在撰写博文的过程当中,我发现了不少以前没有注意到的问题,收获不可谓不硕大。论语云,“温故而知新”,诚不我欺!