系统码和非系统码
按照差错控制编码的不同功能,可以将其分为检错码、纠错码和纠删码。检错码仅能检测误码;纠错码仅可纠正误码;纠删码则兼有纠错和检错能力,当发现不可纠正的错误时可以发出错误只是或者简单地删除不可纠正错误的信息段落。
按照信息码元和附加的监督码元之间的检验关系可以分为线性码和非线性码。 若信息码元与监督码元之间的关系为线性关系,即满足一组线性方程式,则称为线性码。反之,若两者不存在线性关系,则称为非线性码。
按照信息码元和监督码元之间的约束方式不同可以分为分组码和卷积码。 在分组码中,编码后的码元序列每n位分为一组,其中k个是信息码元,r个是附加的监督码元,r=n-k。监督码元仅与本码组的信息码元有关,而与其它码组的信息码元无关。卷积码则不然,虽然编码后序列也划分为码组,但监督码元不但与本组信息码元有关,而且与前面码组的信息码元也有约束关系。
按照信息码元在编码后是否保持原来的形式不变,可划分为系统码和非系统码。 在差错控制编码中,通常信息码元和监督码元在分组内有确定的位置,一般是信息码元集中在码组的前k位,而监督码元集中在后r=n-k位(有时两者倒过来放置)。在系统码中,编码后的信息码保持原样不变,而非系统码中信息码元则改变了原有的信号形式。系统码的性能大体上与非系统码相同,但是在某些卷积码中非系统码的系统优于系统码。优于非系统码中的信息位已“面目全非”,这对观察和译码都带来麻烦,因此很少应用。系统码的编码和译码相对比较简单些,因而得到广泛应用。
按照纠正错误的类型不同,可以分为纠正随机错误的码和纠正突发错误的码。 前者主要用于发生零星独立错误的信道,而后者则用于对付以突发错误为主的信道。
按照构造差错控制编码的数学方法来分类,可以分为代数码、几何码和算术码。 代数码建立在近世代数学基础上,是目前发展最为完善的编码。线性码是代数码的一个最重要的分支。
按照每个码元取值不同,可以分为二进制码和多进制码
非系统polar码的编码方式
由前一篇文章的介绍可知,polar码引入了克罗内克积和对称翻转操作计算得到的N阶编码矩阵:
F
≜
{
1
0
1
1
}
F \triangleq \begin{Bmatrix} 1 & 0 \\ 1 & 1 \end{Bmatrix}
F≜{1101}
G
≜
F
⨂
n
⋅
B
N
G \triangleq F^{\bigotimes n} \cdot B_{N}
G≜F⨂n⋅BN
如果使用
u
1
N
=
(
u
0
,
u
1
,
u
2
,
.
.
,
u
N
)
u_{1}^{N}=(u_{0},u_{1},u_{2},..,u_{N})
u1N=(u0,u1,u2,..,uN)来代表输入编码器的序列,
x
1
N
=
(
x
0
,
x
1
,
x
2
,
.
.
,
x
N
)
x_{1}^{N}=(x_{0},x_{1},x_{2},..,x_{N})
x1N=(x0,x1,x2,..,xN)
从而可以得到非系统码的编码表达方式:
x
1
N
=
u
1
N
⋅
G
x_{1}^{N} =u_{1}^{N} \cdot G
x1N=u1N⋅G
系统polar码的编码方式
首先对polar码输入输出序列进行划分。
如果某一polar码的信息位集合为
A
(
A
⊆
{
1
,
2
,
.
.
.
,
N
}
)
A(A \subseteq \{1,2,...,N\})
A(A⊆{1,2,...,N}),它的补集为
A
C
A^{C}
AC,因此我们可以把非系统编码的公式进行分解:
x
=
u
A
⋅
G
A
+
u
A
C
⋅
G
A
C
x =u_{A} \cdot G_{A} + u_{A^{C}} \cdot G_{A^{C}}
x=uA⋅GA+uAC⋅GAC
上式中下标
G
A
G_A
GA代表信息位
A
A
A所构成的新矩阵。同理
A
C
A^C
AC的下标代表另一部分的矩阵。如果设定系统码的信息位集合为B(B \subseteq {1,2,…,N})
,
补
集
为
,补集为
,补集为B^{C}$,则码字
x
=
(
x
B
,
x
B
C
)
x=(x_{B},x_{B^C})
x=(xB,xBC),我们又可以对公式进行进一步的划分:
x
B
=
u
A
⋅
G
A
B
+
u
A
C
⋅
G
A
C
B
x_{B} =u_{A} \cdot G_{AB} + u_{A^{C}} \cdot G_{A^{C}B}
xB=uA⋅GAB+uAC⋅GACB
x
B
C
=
u
A
⋅
G
A
B
C
+
u
A
C
⋅
G
A
C
B
C
x_{B^C} =u_{A} \cdot G_{AB^C} + u_{A^{C}} \cdot G_{A^{C}B^C}
xBC=uA⋅GABC+uAC⋅GACBC
G
A
B
G_{AB}
GAB等和
G
G
G相关的子矩阵由元素
G
(
i
,
j
)
G(i,j)
G(i,j)构成,
i
∈
A
i \in A
i∈A,
j
∈
B
j \in B
j∈B。
根据系统码的定义,系统码码字的前半部分由信源比特构成,后半部分为冗余比特。
Arikan基于以上的推论得出,当
A
A
A和
B
B
B包含相同的元素且
G
A
B
G_{AB}
GAB为可逆矩阵时,Polar码存在系统码形式。当已知待编码比特
x
B
x_B
xB和冻结位信息
u
A
C
u_{A^C}
uAC后,可以直接计算出:
u
A
=
(
x
B
−
u
A
C
G
A
C
B
)
G
A
B
−
1
u_{A} =(x_B-u_{A^C}G_{A^{C}B}) G_{AB}^{-1}
uA=(xB−uACGACB)GAB−1
计算出
u
A
u_{A}
uA后,在对
x
B
C
x_{B^C}
xBC进行计算,便可以完成编码后数据的映射。
性能分析
仿真测试证明在相同码率码长下,系统polar码和非系统polar码的误帧率基本一致,系统码的误码率要优于非系统码。