PUCCH format2中的RM码(reed muller code)和Polar码

  • Post author:
  • Post category:其他




一、RM码



1、RM的编码

RM码是一类纠正多个差错的编码,这类码构造简单的构造,结构特性丰富。对于任意整数m和r,0<r<m,存在一个二级制r阶RM码,记为RM(r,m)。

码长为2

m

,以m=3为例子,码长为8,这个码有四个基本的基,如下:

x0=[1 1 1 1 1 1 1 1];
x1=[1 1 1 1 0 0 0 0];
x2=[1 1 0 0 1 1 0 0];
x3=[1 0 1 0 1 0 1 0];


R(0,3)表示0级的线性组合


码的生成多项式就为x0,信息就是1比特


R(1,3)表示1级的线性组合


这时码的生成多项式就为:

[x0;x1;x2;x3] = 1 1 1 1 1 1 1 1
                1 1 1 1 0 0 0 0
                1 1 0 0 1 1 0 0
                1 0 1 0 1 0 1 0



信息就是4个比特


R(2,3)表示2级的线性组合

[x0;x1;x2;x3;x1x2;x1x3;x2x3] =
                1 1 1 1 1 1 1 1
                1 1 1 1 0 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 0 0
                1 1 1 1 1 0 1 0
                1 1 1 0 1 1 1 0       

式中x1x2表示向量x1和x2向量相乘,也就是按位相与。



信息就是7个比特


R(3,3)表示3级的线性组合

[x0;x1;x2;x3;x1x2;x1x3;x2x3;x1x2x3]



信息就是8个比特



从上面就可以归纳出RM(r,m)的生成多项式包含的列一共有:

k=1+C(m,1)+C(m,2)+…+C(m,r);

C(m,r)表示m个元素你r个元素相组合得到的组合个数。



2、RM码的性质

在线性分组码中,两个码字对应位上数字

不同的位数

称为码字距离,简称距离

性质一:对于R(r,m),任意两个码字之间的距离是2

m-r



根据差错编码控制理论,如果一种编码具有纠e个错的能力,那么这个码的任意两个码字之间的最小距离就要大于2e。



3、RM的译码


下面介绍一个直观的译码算法,这个算法的基本思想是:


验证编码矩阵里的每一行,即采用大数逻辑决定这一行在编码的时候是否被采用。


详细的译码算法:

  • 第一步:对于R(r,m)编码矩阵里的每一行,找到其2m-r 个特征矢量,然后将每个特征矢量与这个码字进行点乘(GF(2)域上的矢量内积)。
  • 第二步:观察点乘的结果里0和1的个数,如果0的个数多,则对应一行的系数定为0,否则定位1.
  • 第三步:前两步是针对生成矩阵除了第一行的任意一行做的,做完之后将每一行与得到的系数相乘,然后将这些矢量相加得到新的一个矢量,然后将这个矢量与接收到的码字相加得到一个新的矢量,然后判断这个矢量里0和1的个数,如果0多,则表明第一行的系数是0,否则表明第一行的系数是1。这些系数即是译码的结果。


那么,每一行的监督矩阵如何得到:


对于每一行定义一个集合E,这个集合包含的元素是这一行里所没有包含的所有xi ,举一个例子,前面的R(1,3)的最后一行是x3,那么这一行对应的集合E就是{x1,x2},对于R(2,3)最后一行是x2x3,那么这个集合就是{x1}。

特征多项式是集合里的每个元素或者它的补码的线性组合(一个组合只能出现它自己或者它的补码)。


补码的概念:

多项式的各个元素去反得到的码,x1’ 是x1的补码。

举个例子,对于R(1,3)的生成多项式的最后一行,得到集合E为{x1,x2},那么它的特征多项式就是:x1x2,x1x2’ ,x1’ x2,x1’ x2’




二、Polar码