当前位置:   article > 正文

[⑤5G NR]: 5G Polar编码算法_5g polar码编码标准

5g polar码编码标准

前言

博主在[①5G NR]: 3GPP协议中Polar编码流程解读中介绍了5G中Polar码编码的相关流程,在这篇博客中就介绍下在5G中Polar码基础编码的算法,Polar码(极化码)的发明者是Erdal Arikan教授。

Arikan kernel

首先来介绍下什么是Arikan kernel。Arikan kernel或者Arikan matrix是个 2 ∗ 2 2*2 22的矩阵:

G 2 = [ 1 0 1 1 ] G_2=

[1011]
G2=[1101]

对于最基础情形, b ‾ = [ b 0 , b 1 ] \underline{b}=[b_0, b_1] b=[b0,b1]为信息比特序列, c ‾ = [ c 0 , c 1 ] \underline{c}=[c_0, c_1] c=[c0,c1]为码字比特序列,那么就满足:

c ‾ = b ‾ ⋅ G 2 \underline{c}=\underline{b}\cdot G_2 c=bG2

结果可以由下图来描述:

生成矩阵 G N G_N GN

Polar码的长度为 N = 2 n N=2^n N=2n,根据协议章节5.3.1.2,Polar码的生成矩阵 G N G_N GN G 2 G_2 G2通过Kronecker prodcut(克罗内克内积)计算得到:

G N = G 2 n = G 2 ⊗ G 2 n − 1 = [ G 2 n − 1 0 G 2 n − 1 G 2 n − 1 ] = ( G 2 ) ⊗ n G_N=G_{2^n}=G_2\otimes G_{2^{n-1}}=

[G2n10G2n1G2n1]
=(G_2)^{\otimes n} GN=G2n=G2G2n1=[G2n1G2n10G2n1]=(G2)n

如果 u ‾ = [ u 0 , u 1 , . . . , u N − 1 ] \underline{u}=[u_0,u_1,... ,u_{N-1}] u=[u0,u1,...,uN1]为编码前的输入的信息比特序列, d ‾ = [ d 0 , d 1 , . . . , d N − 1 ] \underline{d}=[d_0,d_1,... ,d_{N-1}] d=[d0,d1,...,dN1]为编码后的输出的码字比特序列,那么就满足:

d ‾ = u ‾ ⋅ G N \underline{d}=\underline{u}\cdot G_N d=uGN

样例 N = 8 N=8 N=8

Polar码码字的结果可以通过(recursive encoding)迭代的方式计算得出,以 N = 2 3 = 8 N=2^3=8 N=23=8为例,可以通过迭代3次计算得出,首先生成矩阵 G 8 G_8 G8为:

G 8 = G 2 ⊗ G 2 ⊗ G 2 = [ 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 ] G_8=G_2\otimes G_2 \otimes G_2=

[1000000011000000101000001111000010001000110011001010101011111111]
G8=G2G2G2= 1111111101010101001100110001000100001111000001010000001100000001

u ‾ ( n ) \underline{u}^{(n)} u(n) 为第n次迭代,那么3次迭代的过程见下图:

如果 u ‾ = [ 0 , 0 , 0 , 1 , 0 , 1 , 1 , 1 ] \underline{u}=[0,0,0,1,0,1,1,1] u=[0,0,0,1,0,1,1,1],那么

u ‾ ( 1 ) = [ 0 , 0 , 1 , 1 , 1 , 1 , 0 , 1 ] \underline{u}^{(1)}=[0,0,1,1,1,1,0,1] u(1)=[0,0,1,1,1,1,0,1]
u ‾ ( 2 ) = [ 1 , 1 , 1 , 1 , 1 , 0 , 0 , 1 ] \underline{u}^{(2)}=[1,1,1,1,1,0,0,1] u(2)=[1,1,1,1,1,0,0,1]
u ‾ ( 3 ) = [ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 ] \underline{u}^{(3)}=[0,1,1,0,1,0,0,1] u(3)=[0,1,1,0,1,0,0,1]
d ‾ = u ‾ ⋅ G 8 = [ 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 ] \underline{d}=\underline{u}\cdot G_8=[0,1,1,0,1,0,0,1] d=uG8=[0,1,1,0,1,0,0,1]

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号