概率加权的信道检错纠错码-(杰林码之信道检错纠错编码算法论文初稿)

声明:本算法(初稿)由王杰林发明并申请若干专利,严禁商用(违者必究),相关的demo和SDK均已上传到本论坛,任何人可以用于测试和学习,不足之处欢迎指正。他人转载请标明出处和商业禁止条款,严禁将本文观点发表到其他杂志或刊物上。另外,建议先看实验结果再看论文。欢迎大家到“杰林码技术交流社区”查看最新研究成果和相关的技术文档。
CSDN下载链接:
杰林码之信道纠错编码demo
杰林码之信道检错编码
个人官方论坛DEMO下载地址:
杰林码之信道检错编码demo
杰林码之信道纠错编码demo
AWGN仿真程序
(以下为论文初稿的正文)

作者:王杰林1

摘要

将二进制序列规律性添加符号,这些规律性添加符号的方法为译码提供检错和纠错判断的依据。定义符号 x x 的加权概率为 φ ( x ) = r p ( x ) \varphi\left(x \right) = rp\left( x \right) ,其中 p ( x ) p\left( x \right) 为变量 x x 的归一化且固定概率, r r 为权系数,令 F ( x , r ) F\left( x,r\right) 为加权分布函数。本文使用加权分布函数 F ( x , r ) F\left( x,r\right) 对添加符号后的二进制序列进行无损编码,实验证明,编码可极大消除了所添加的符号,且在译码时还能保持人为添加的规律。于是译码过程中,通过判断译码出的序列是否符合规律而判定编码后数据在传输时是否发生错误。文中给出了一种信道检错和一种信道纠错码的方法,可实现错误校验和向前纠正错误。在二进制对称信道(BSC)下,码率趋近于1,即可以用极少的代价实现错误校验。当码率为1/1.5849625和1/2时理论上可完整纠错译码。

关键词:信息熵,信道容量,算术编码,信道纠错

1.引言

算术编码[1][2]是一种熵[3]编码,目前对算术编码的研究仅限于信源编码。当待编码序列足够长时,算术编码可以无限接近序列的熵极限。且算术编码对错误很敏感,某一位置发生比特错误时,会导致译码错误。经分析得出,算术编码是基于加权分布函数 F ( x , 1 ) F\left(x,1 \right) 的无损编码方法,即权系数 r = 1 r = 1 。本文基于加权分布函数 F ( x , r ) ( r > 1 ) F\left(x,r \right)\left( r > 1\right) ,给出一种全新的检错纠错方法。以二进制序列为例,每个符号1后增加一个符号0,于是序列具有一种规律“每个符号1被一个或多个符号0隔开”,若连续译码出两个符号1,则说明数据在传输时出现了差错。为确保译码时规律“每个符号1被一个或多个符号0隔开”仍然存在,且编码后数据尽可能接近二进制序列的熵极限,使用加权分布函数 F ( x , r ) F\left( x,r \right) 进行编码可达到要求。

1.1 算术编码回顾

R 0 = 1 R_{0} = 1 L 0 = 0 L_{0} = 0 ,第 i ( i = 1 , 2 , 3 , . . . ) i(i=1,2,3,...) 个符号算术编码的计算公式为

R i = R i 1 p ( x ) R_{i} = R_{i - 1}p(x) (1-1)
L i = L i 1 + R i 1 F ( x 1 ) L_{i} = L_{i - 1} + R_{i - 1}F( x - 1) (1-2)
H i = L i + R i H_{i} = L_{i} + R_{i} (1-3)

其中 R i , L i , H i R_{i},L_{i},H_{i} 为计算变量,当 x { 0 , 1 } x \in \{ 0,1\} 时算术编码为二进制算术编码, p ( x ) p\left( x \right) x x 的概率, F ( x ) F\left( x \right) 为分布函数

F ( x ) = s x p ( s ) F\left( x \right) = \sum_{s \leq x}{p\left( s \right)} (1-4)

F ( x ) = F ( x 1 ) + p ( x ) F\left( x \right) = F\left( x - 1 \right) + p\left( x \right) H i = L i 1 + R i 1 F ( x ) H_{i} =L_{i - 1} + R_{i - 1}F\left( x \right) ,且 0 F ( x ) 1 0 \leq F\left( x \right) \leq1 。算术编码满足区间从属关系 [ L i , H i ) [ L i 1 , H i 1 ) [ L 1 , H 1 ) \left\lbrack L_{i},H_{i} \right) \in \left\lbrack L_{i - 1},H_{i - 1} \right) \in \ldots \in \left\lbrack L_{1},H_{1}\right) 。因 L i [ L i , H i )   &   L i [ L i 1 , H i 1 )   &   &   L i [ L 1 , H 1 ) L_{i} \in \left\lbrack L_{i},H_{i} \right)\ \&\ L_{i} \in\left\lbrack L_{i - 1},H_{i - 1} \right)\ \&\ \ldots\&\ L_{i} \in \left\lbrack L_{1},H_{1}\right) ,所以 L i L_{i} 为编码结果。二进制算术译码时,根据(1-1)(1-2)(1-3)求出第 j ( j = 1 , 2 , 3 , , i ) j(j= 1,2,3,\ldots,i) 个符号0的区间上标 H j 0 H_{j}^{0} H j 0 = L j 1 + p ( 0 ) R j 1 H_{j}^{0} = L_{j - 1} +p\left( 0 \right)R_{j - 1} ,当 j = 1 j = 1 时, L 0 = 0 L_{0} = 0 R 0 = 1 R_{0} =1 。然后判断 L i L_{i} H j 0 H_{j}^{0} 的大小,当 L i < H j 0 L_{i} <H_{j}^{0} 时,则译码出符号0;当 L i H j 0 L_{i} \geq H_{j}^{0} 时,则译码出符号1。

1.2 信息熵

根据信息论,符号的概率大小决定了其自信息量的大小,即具有概率为 p ( x ) p\left( x \right) 的符号 x x 的自信息量为

I ( x ) = log p ( x ) I\left( x \right) = - \log{p\left( x \right)} (1-5)

自信息量的单位与所用的对数底数有关。在信息论中常用的对数底数为2,信息量对应的单位为比特(bit)。信息熵为

H ( X ) = x = 0 k p ( x ) log p ( x ) H\left( X \right) = - \sum_{x = 0}^{k}{p\left( x \right)\log{p\left( x \right)}} (1-6)

根据最大熵原理,符号等概情形下熵最大,即任意符号 x x p ( x ) = 1 k + 1 p\left( x \right) =\frac{1}{k + 1} ,则 max H ( X ) = log 1 k + 1 \max H\left( X \right) = - \log\frac{1}{k +1} 。若对数以 k + 1 k + 1 为底,则 max H ( X ) = 1 \max H\left( X \right) = 1

1.3 论文大纲

文中第二部分讨论加权分布函数 F ( x , r ) F\left( x,r\right) 及其熵表达方式。第三部分给出加权分布函数 F ( x , r ) F\left( x,r\right) 的信道编码步骤:首先给出二进制序列规律性添加符号的方法,然后推理加权分布函数 F ( x , r ) F\left(x,r\right) 无损编码的条件,并给出每个符号的加权概率。接着在有噪二进制信道下,给出了二进制对称信道(BSC)的纠错方案,并推理该纠错方案的理论极限。第四部分由实验得出BSC信道下的误比特率(BER)和误块率(BLER)。

2.加权分布函数
定义任意时刻所有离散变量的概率之和可以不等于1,等于已知实数 r r 。于是,随机变量 x x 的加权概率为 φ ( x ) = r p ( x ) \varphi\left(x \right) = rp\left( x \right) ,其中 p ( x ) p\left( x\right) 为符号 x x 的归一化且固定概率, r r 为权系数。将加权分布函数记为 F ( x , r ) F\left(x,r \right) ,则 F ( x , r ) = r F ( x ) F\left( x,r \right) = rF\left( x\right) 。于是,任意时刻所有符号的加权概率之和为

x = 0 k φ ( x ) = r \sum_{x = 0}^{k}{\varphi\left( x \right)} = r (2-1)

r = 1 r = 1 时, φ ( x ) = p ( x ) \varphi\left( x \right) = p\left( x \right) ,且 x = 0 k φ ( x ) = 1 \sum_{x =0}^{k}{\varphi\left( x \right)} = 1 。且

F ( x , r ) = s x φ ( s ) = r s x p ( s ) = r F ( x ) F\left( x,r \right) = \sum_{s \leq x}^{}{\varphi\left( s \right)} = r\sum_{s \leq x}^{}{p\left( s \right)} = rF\left( x \right) (2-2)

令随机过程 X = { x 1 , x 2 , , x n } X = \left\{ x_{1},x_{2},\ldots,x_{n}\right\} ,且每个符号概率的加权系数为 r r ,则 X X 的加权分布函数为

F ( X , r ) = i = 1 n r i F ( x i 1 ) j = 1 i 1 p ( x j ) + r n i = 1 n p ( x i ) F\left( X,r \right) = \sum_{i = 1}^{n}{r^{i}F\left( x_{i} - 1 \right)\prod_{j = 1}^{i - 1}{p\left( x_{j} \right)}} + r^{n}\prod_{i = 1}^{n}{p\left( x_{i} \right)} (2-3)

r = 1 r = 1

F ( X , 1 ) = i = 1 n F ( x i 1 ) j = 1 i 1 p ( x j ) + i = 1 n p ( x i ) F\left( X,1 \right) = \sum_{i = 1}^{n}{F\left( x_{i} - 1 \right)\prod_{j = 1}^{i - 1}{p\left( x_{j} \right)}} + \prod_{i = 1}^{n}{p\left( x_{i} \right)} (2-5)

由(1-1)(1-2)(1-3)可得 H n = F ( X , 1 ) H_{n} = F\left( X,1 \right) L n = i = 1 n F ( x i 1 ) j = 1 i 1 p ( x j ) L_{n} = \sum_{i =1}^{n}{F\left( x_{i} - 1 \right)\prod_{j = 1}^{i - 1}{p\left( x_{j}\right)}} R n = i = 1 n p ( x i ) R_{n} = \prod_{i = 1}^{n}{p\left( x_{i}\right)} ,即算术编码是基于加权分布函数 F ( x , 1 ) F\left( x,1\right) 的无损编码方法。当 r = 1 r = 1 时, φ ( x ) = p ( x ) \varphi\left( x \right) = p\left( x\right) ,则信息熵为

H ( X , 1 ) = H ( X ) = x = 0 k p ( x ) log p ( x ) H\left( X,1 \right) = H\left( X \right) = - \sum_{x = 0}^{k}{p\left( x \right)\log{p\left( x \right)}} (2-3)

r 1 r \neq 1 时,具有概率 φ ( x ) \varphi\left( x \right) 的符号 x x 的自信息量为

I ( x ) = log φ ( x ) I\left( x \right) = - \log{\varphi\left( x \right)} (2-4)

设离散随机序列 X = { x i , i = 1 , 2 , , n } X = \left\{ x_{i},i = 1,2,\ldots,n \right\} x i { 0 , 1 , 2 , , k } x_{i} \in \{ 0,1,2,\ldots,k\} ,将符号 x x 的个数记为 c x c_{x} 。当 r r 的值确定,离散随机序列 X X 的总信息量为

x = 0 k c x log φ ( x ) - \sum_{x = 0}^{k}{c_{x}\log{\varphi\left( x \right)}}

于是平均每个符号的信息量为

1 n x = 0 k c x log φ ( x ) = x = 0 k p ( x ) log φ ( x ) - \frac{1}{n}\sum_{x = 0}^{k}{c_{x}\log{\varphi\left( x \right)}} = - \sum_{x = 0}^{k}{p\left( x \right)\log{\varphi\left( x \right)}}

则加权概率的熵 H ( X , r ) H\left( X,r \right)

H ( X , r ) = x = 0 k p ( x ) log φ ( x ) H\left( X,r \right) = - \sum_{x = 0}^{k}{p\left( x \right)\log{\varphi\left( x \right)}} (2-5)
= log r x = 0 k p ( x ) log p ( x ) = - \log r - \sum_{x = 0}^{k}{p\left( x \right)\log{p\left( x \right)}} (2-6)
= log r + H ( X ) = - \log r + H\left( X \right) (2-7)

r < 1 r < 1 r 0 r \rightarrow 0 时, log r + - \log r \rightarrow +\infty ,则 H ( X , r ) + H\left( X,r \right) \rightarrow + \infty 。当 r < 1 r < 1 r 1 r\rightarrow 1 时, log r 0 - \log r \rightarrow 0 ,则 H ( X , r ) H ( X ) H\left( X,r \right)\rightarrow H\left( X \right) 。当 r = 1 r = 1 时, log r = 0 - \log r = 0 ,则 H ( X , 1 ) = H ( X ) H\left(X,1 \right) = H\left( X \right)

3.检错和纠错

编码前,给二进制序列规律性添加符号(即编码前对序列进行预处理)。添加符号的方法有很多,下面给出两种简单的预处理方法。

方法一:“每个符号1后增加1个符号0”,则规律为“每个符号1被符号0隔开”。当连续译码出2个或2个以上的符号1,则说明数据在传输过程中发生错误,规律是译码时判断依据。预处理后序列进行算术编码时,符号0实际用于编码的加权概率为 φ ( 0 ) \varphi\left(0 \right) ;符号1的加权概率为 φ ( 1 ) \varphi\left( 1 \right) 。因为 φ ( x ) = r p ( x ) \varphi\left( x\right) = rp\left( x\right) ,且二进制序列中符号0和符号1的概率为 p ( 0 ) p\left( 0 \right) p ( 1 ) p\left( 1\right) ,显然 φ ( 0 ) + φ ( 1 ) = r p ( 0 ) + r p ( 1 ) = r \varphi\left( 0 \right) + \varphi\left( 1 \right) =rp\left( 0 \right) + rp\left( 1 \right) =r ,于是 r r 为作用在符号0和符号1概率上的权系数。

方法二:“每个符号1后增加1个符号0,再每个符号0后增加1个符号1”,则规律为“每个符号0被1个或2个符号1隔开”。同理当连续译码出2个符号0或连续译码出3个符号1,则说明数据在传输过程中发生错误。同方法一,令符号0和符号1的加权概率为 φ ( 0 ) \varphi\left(0 \right) φ ( 1 ) \varphi\left( 1 \right)

显然,方法二比方法一多了一个判断的依据。我们令 φ ( 1 ) = 1 \varphi\left( 1 \right) =1 φ ( 0 ) = 1 d \varphi\left( 0 \right) =\frac{1}{d} ,在无噪二进制信道下,可验证加权分布函数的编码是无损的,编码方法总结如下。

3.1 无噪二进制信道编译码

3.1.1 编码步骤

预处理后二进制序列的算术编码实现步骤如下

步骤1:初始化参数,设 R 0 = 1 , L 0 = 0 ,   i = 1 R_{0} = 1,L_{0} = 0,\ i = 1 φ ( 0 ) = 1 d \varphi\left( 0 \right)= \frac{1}{d} ,根据预处理方法不同 d d 值的取值范围也不同, φ ( 1 ) = 1 \varphi\left( 1\right) = 1 V = 0 V =0 ( V V 为算术编码后 L i L_{i} 的值);获取二进制序列长度,记录为 L e n Len ,其中符号0的个数为 c 0 c_{0} ,符号1的个数为 c 1 c_{1}

步骤2:编码第 i i 个符号,若第 i i 个符号为符号0,则转步骤3;若第 i i 个符号为符号1,则转步骤4。

步骤3:根据(1-1)(1-2)计算 R i R_{i} L i L_{i} 的值, R i = R i 1 φ ( 0 ) R_{i} = R_{i -1}\varphi\left( 0 \right) ,因 F ( 1 ) = 0 F\left( - 1 \right) = 0 ,所以 L i = L i 1 L_{i} = L_{i -1} i = i + 1 i = i + 1 ;转步骤5。

步骤4:根据(1-1)(1-2)计算 R i R_{i} L i L_{i} 的值, R i = R i 1 φ ( 0 ) R_{i} = R_{i -1}\varphi\left( 0 \right) ,因 F ( 0 ) = φ ( 0 ) F\left( 0 \right) = \varphi\left( 0\right) L i = L i 1 + R i 1 φ ( 0 ) L_{i} = L_{i - 1} + R_{i - 1}\varphi\left( 0 \right) ;转步骤5。

步骤5:判断若 i Len i \leq \text{Len} ,则转步骤2;若 i > L e n i > Len V = L L e n V = L_{Len} ,结束编码,输出 V V c 0 c_{0} c 1 c_{1}

3.1.2 译码步骤
无噪声信道下,可无误接收到 V V c 0 c_{0} c 1 c_{1} 的值。
步骤1:初始化参数,设 R 0 = 1 , L 0 = 0 ,   i = 1 , j = 0 R_{0} = 1,L_{0} = 0,\ i = 1,j = 0 φ ( 0 ) = 1 d \varphi\left( 0 \right) = \frac{1}{d} , φ ( 1 ) = 1 \varphi\left( 1 \right) =1 d d 的值由预处理方法给出; V V c 0 c_{0} c 1 c_{1} 通过接收获取, L e n = c 0 + c 1 Len= c_{0} + c_{1}

步骤2:根据(1-1)(1-2)(1-3)给出第 i i 个符号0的区间上标值: H i 0 = L i 1 + φ ( 0 ) R i 1 H_{i}^{0} = L_{i - 1} + \varphi\left( 0 \right)R_{i - 1} ,转步骤3。

步骤3:判断 V V H i 0 H_{i}^{0} 的大小,若 V < H i 0 V < H_{i}^{0} ,输出符号0, j = j + 1 j = j + 1 ;若 V H i 0 V \geq H_{i}^{0} ,输出符号1,转步骤4。

步骤4: i = i + 1 i = i + 1 ;若 j L e n j \leq Len ,则转步骤2;若 j > L e n j >Len ,转步骤5。

步骤5:清除规律性添加的符号,译码完成。

第四章的实验得出,方法一中 d 2 d \geq 2 和方法二中 d 3 d \geq 3 时编译码过程是无损的。方法一中当 d = 2 d = 2 时,编码后的比特长度等于编码前的长度。

3.1.3 无损译码条件
设二进制序列中符号0的个数为 c 0 c_{0} ,符号1的个数为 c 1 c_{1} ,且序列中符号1的最大连续个数为1。于是,符号0和符号1的概率为

p ( 0 ) = c 0 c 0 + c 1 , p ( 1 ) = c 1 c 0 + c 1 p\left( 0 \right) = \frac{c_{0}}{c_{0} + c_{1}},p\left( 1 \right) = \frac{c_{1}}{c_{0} + c_{1}}

我们可以去除所有符号1后的符号0,然后统计符号0和符号1的概率为

p ( 0 ) = c 0 c 1 c 0 , p ( 1 ) = c 1 c 0 p'\left( 0 \right) = \frac{c_{0} - c_{1}}{c_{0}},p'\left( 1 \right) = \frac{c_{1}}{c_{0}}

设去除符号0后,二进制序列不再存在任何规律,且 p ( 0 ) = p ( 1 ) = 1 / 2 p'\left( 0 \right) = p'\left( 1\right) = 1/2 ,则 p ( 0 ) = 2 / 3 p\left( 0 \right) = 2/3 p ( 1 ) = 1 / 3 p\left( 1 \right) =1/3 。根据(1-6)得去除符号0后二进制序列的信息熵为(单位为比特)

H ( X ) = p ( 0 ) log 2 p ( 0 ) p ( 1 ) log 2 p ( 1 ) = 1 H'\left( X \right) = - p'\left( 0 \right)\log_{2}{p'\left( 0 \right)} - p'\left( 1 \right)\log_{2}{p'\left( 1 \right)} = 1 (3-1)

显然,无损压缩编码后的二进制长度是原二进制长度的 2 / 3 2/3 ,即原二进制序列的实际信息熵为 2 / 3 2/3 。根据(2-5),基于加权分布函数进行压缩编码时,存在如下表达式

H ( X , r ) = 2 3 log 2 φ ( 0 ) 1 3 log 2 φ ( 1 ) H\left( X,r \right) = - \frac{2}{3}\log_{2}{\varphi\left( 0 \right)} - \frac{1}{3}\log_{2}{\varphi\left( 1 \right)} (3-2)

其中 r = φ ( 0 ) + φ ( 1 ) r = \varphi \left( 0 \right) + \varphi \left( 1 \right) ,当 H ( X , r ) = 2 / 3 H\left( X,r \right) =2/3 时,则基于加权分布函数进行压缩编码可达到熵极限。设随机序列中子串010起始于时刻 i + 1 i+ 1 ,用 φ ( 0 ) , φ ( 1 ) \varphi \left( 0 \right),\varphi \left( 1\right) 进行算术编码过程如图1。
在这里插入图片描述
(图1)
根据图1,若 H i + 3 > H i + 1 H_{i + 3} > H_{i+1} ,因区间 [ H i + 1 , H i + 3 ) [ H i + 1 , H i + 1 + R i + 1 ) \left\lbrack H_{i+1},H_{i + 3} \right) \in \lbrack H_{i+1},H_{i+1} + R_{i+1}) ,且 [ H i + 1 , H i + 1 + R i + 1 ) \lbrack H_{i+1},H_{i+1} +R_{i+1}) 与符号1对应,所以第 i + 1 i+1 个符号0可能被错误解码为符号1。若 φ ( 0 ) , φ ( 1 ) \varphi \left(0 \right),\varphi\left( 1 \right) 满足 H i + 3 H i + 1 H_{i + 3} \leq H_{i+1} ,则 [ L i + 3 , H i + 3 ) [ L i + 1 , H i + 1 ) \left \lbrack L_{i + 3},H_{i + 3} \right) \in \lbrack L_{i+1},H_{i+1}) 。如图1中 [ L i + 1 , H i + 1 ) \lbrack L_{i+1},H_{i+1}) 与符号0唯一对应,所以第一个符号0被正确解码,依此类推得 L ( i + 3 ) L_(i+3) 可无损译码子串010。 H i + 3 = L i + R i φ ( 0 ) 2 + R i φ ( 0 ) 2 φ ( 1 ) H_{i + 3} = L_{i} +R_{i}{\varphi\left( 0 \right)}^{2} + R_{i}{\varphi\left( 0\right)}^{2}\varphi\left( 1 \right) H i = L i + R i φ ( 0 ) H_{i} = L_{i} + R_{i}\varphi\left( 0\right) ,由 H i + 3 H i + 1 H_{i + 3} \leq H_{i+1}

φ ( 0 ) φ ( 1 ) + φ ( 0 ) 1 \varphi\left( 0 \right)\varphi\left( 1 \right) + \varphi\left( 0 \right) \leq 1 (3-3)

根据(3-3),设 φ ( 1 ) = 1 \varphi\left( 1 \right) = 1 ,则 φ ( 0 ) 1 / 2 \varphi\left( 0 \right) \leq 1/2 ,此时 r = φ ( 0 ) + φ ( 1 ) 1.5 r = \varphi\left( 0 \right) + \varphi\left( 1 \right) \leq 1.5 。将 φ ( 1 ) = 1 \varphi\left( 1 \right) = 1 φ ( 0 ) = 1 / 2 \varphi\left( 0 \right) = 1/2 代入(3-2)得 H ( X , r ) = 2 3 H\left( X,r \right) = \frac{2}{3} 。当 φ ( 1 ) = 1 , φ ( 0 ) 1 / 2 \varphi\left( 1\right) = 1,\varphi\left( 0 \right) \leq 1/2 时,根据(1-1)(1-2)(1-3)有 F ( 0 , r ) = φ ( 0 ) 1 / 2 F\left(0,r \right) = \varphi\left( 0 \right) \leq 1/2 。若能证明 L i + 4 < H i + 3 & L i + 4 < H i + 2 & L i + 4 < H i + 1 & L i + 4 < H i L_{i + 4} < H_{i +3}\& L_{i + 4} < H_{i + 2}\& L_{i + 4} < H_{i + 1}\& L_{i + 4} <H_{i} ,则由归纳法可得 L n < H n & L n < H n 1 & & L n < H 1 L_{n} < H_{n} \& L_{n} < H_{n - 1} \& \ldots \& L_{n} < H_{1} ,其中 n n 远大于 i i ,即可通过 L n L_{n} 无损译码。证明如下

因为 H i = L i + R i H_{i} = L_{i} + R_{i} H i + 1 = L i + R i φ ( 0 ) L i + 1 2 R i H_{i + 1} = L_{i} + R_{i}\varphi\left( 0\right) \leq L_{i} + \frac{1}{2}R_{i} H i + 2 = L i + R i φ ( 0 ) 2 + R i φ ( 0 ) L i + 3 4 R i H_{i + 2} = L_{i} +R_{i}{\varphi\left( 0 \right)}^{2} + R_{i}\varphi\left( 0 \right) \leq L_{i} +\frac{3}{4}R_{i} , H i + 3 = L i + R i φ ( 0 ) 2 + R i φ ( 0 ) 2 L i + 1 2 R i ,H_{i + 3} = L_{i} + R_{i}{\varphi\left( 0 \right)}^{2} +R_{i}{\varphi\left( 0 \right)}^{2} \leq L_{i} + \frac{1}{2}R_{i} ,若第 i + 4 i +4 个符号为1, L i + 4 = L i + R i φ ( 0 ) 2 + R i φ ( 0 ) 3 φ ( 1 ) L_{i + 4} = L_{i} + R_{i}{\varphi\left( 0 \right)}^{2} +R_{i}{\varphi\left( 0 \right)}^{3}\varphi\left( 1 \right) ,于是 L i + 4 L i + 3 8 R i L_{i + 4}\leq L_{i} + \frac{3}{8}R_{i} 。若第 i + 4 i + 4 个符号为0,则 L i + 4 = L i + R i φ ( 0 ) 2 L i + 1 4 R i L_{i + 4} = L_{i} +R_{i}{\varphi\left( 0 \right)}^{2} \leq L_{i} + \frac{1}{4}R_{i} 。所以 L i + 4 < H i + 3 & L i + 4 < H i + 2 & L i + 4 < H i + 1 & L i + 4 < H i L_{i +4} < H_{i + 3}\& L_{i + 4} < H_{i + 2}\& L_{i + 4} < H_{i + 1}\& L_{i + 4} <H_{i} 成立。

于是当 φ ( 1 ) = 1 , φ ( 0 ) 1 / 2 \varphi\left( 1 \right) = 1,\varphi\left( 0 \right) \leq 1/2 时可通过 L n L_{n} 无损译码,且方法一中无损译码的条件为 d 2 d \geq 2 。将 φ ( 0 ) = r p ( 0 ) \varphi\left( 0 \right) = rp\left( 0 \right) φ ( 1 ) = r p ( 1 ) \varphi\left(1 \right) = rp\left( 1 \right) φ ( 0 ) + φ ( 1 ) = r ( p ( 0 ) + p ( 1 ) ) = r \varphi\left( 0 \right) +\varphi\left( 1 \right) = r\left( p\left( 0 \right) + p\left( 1 \right) \right)= r ,代入(3-3)得

r 2 p ( 1 ) p ( 0 ) + r p ( 0 ) 1 r^{2}p\left( 1 \right)p\left( 0 \right) + rp\left( 0 \right) \leq 1 (3-4)

a x 2 + bx + c = 0 ax^{2} + \text{bx} + c = 0 ,其中 a = p ( 1 ) p ( 0 ) a = p\left( 1 \right)p\left( 0\right) b = p ( 0 ) b = p\left( 0 \right) c = 1 c = - 1 ,且 x > 0 x >0 ,满足(3-4)的正实数根为

x = p ( 0 ) 2 + 4 p ( 1 ) p ( 0 ) p ( 0 ) 2 p ( 1 ) p ( 0 ) x = \frac{\sqrt{{p\left( 0 \right)}^{2} + 4p\left( 1 \right)p\left( 0 \right)} - p\left( 0 \right)}{2p\left( 1 \right)p\left( 0 \right)} (3-5)

因为 p ( 1 ) = 1 p ( 0 ) p\left( 1 \right) = 1 - p\left( 0 \right) ,所以

r 4 p ( 0 ) 3 p ( 0 ) 2 p ( 0 ) 2 p ( 0 ) 2 p ( 0 ) 2 r \leq \frac{\sqrt{4p\left( 0 \right) - 3{p\left( 0 \right)}^{2}} - p\left( 0 \right)}{2p\left( 0 \right) - 2{p\left( 0 \right)}^{2}} (3-6)

r max = 4 p ( 0 ) 3 p ( 0 ) 2 p ( 0 ) 2 p ( 0 ) 2 p ( 0 ) 2 r_{\max} = \frac{\sqrt{4p\left( 0 \right) - 3{p\left( 0 \right)}^{2}} -p\left( 0 \right)}{2p\left( 0 \right) - 2{p\left( 0\right)}^{2}} r max r_{\max} 为无损编码时 r r 的极限值,当 r > r max r >r_{\max} 时编译码过程是有损的。根据上面的分析方法,方法二符号1的最大连续个数为2,起始于时刻 i + 1 i+ 1 的子串0110,无损编码须满足 H i + 4 H i H_{i + 4} \leq H_{i} ,于是得

φ ( 0 ) + φ ( 0 ) φ ( 1 ) + φ ( 0 ) φ ( 1 ) 2 1 \varphi\left( 0 \right) + \varphi\left( 0 \right)\varphi\left( 1 \right) + \varphi\left( 0 \right){\varphi\left( 1 \right)}^{2} \leq 1

φ ( 1 ) = 1 \varphi\left( 1 \right) = 1 ,则 φ ( 0 ) 1 3 \varphi\left( 0 \right) \leq \frac{1}{3} 。即当 d 3 d \geq 3 时可通过 L n L_{n} 无损译码。

3.2 有噪二进制信道检错纠错译码

有噪二进制信道下,通过接收到的 V V 值译码出二进制序列,若序列符合规律则 V V 值正确;若不符合规律则 V V 值错误。由错误 V V 值译码出的二进制序列符合规律的概率为本类纠错码的误判概率,记为 P err P_{\text{err}}

3.2.1 误判概率

译码 l l 个比特的二进制序列,序列有 2 l 2^{l} 种可能性。设 2 l 2^{l} 种序列中有 n n 种序列符合方法一或方法二所述规律,则误判概率 P e r r P_{err}

P err = n 2 l P_{\text{err}} = \frac{n}{2^{l}} (3-7)

经统计,方法一中 n n l l 的斐波那契数列

n l = n l 1 + n l 2 n_{l} = n_{l - 1} + n_{l - 2} (3-8)

l = 1 , n 1 = 2 , P e r r = 1 ; l = 2 , n 2 = 3 , P e r r = 0.75 ; l = 3 , n 3 = 5 , P e r r = 0.625 l = 1,n_{1} = 2,P_{err} = 1;l = 2,n_{2} = 3,P_{err} = 0.75;l =3,n_{3} = 5,P_{err} = 0.625 ,类推当 l 4 l \geq 4 ,由(3-7)和(3-8)得误判概率 P e r r P_{err} l l 变化如图2。

方法二中 n n l l 的帕多瓦数列

n l = n l 2 + n l 3 n_{l} = n_{l - 2} + n_{l - 3} (3-9)

l = 1 , n 1 = 2 , P e r r = 1 ; l = 2 , n 2 = 3 , P e r r = 0.75 ; l = 3 , n 3 = 4 , P e r r = 0.5 l = 1,n_{1} = 2,P_{err} = 1;l = 2,n_{2} = 3,P_{err} = 0.75;l = 3,n_{3} = 4,P_{err} = 0.5 ,类推当 l 4 l \geq 4 ,由(3-7)和(3-9)得误判概率 P e r r P_{err} l l 变化如图3。
在这里插入图片描述
(图2)
在这里插入图片描述
(图3)

从图2和图3的趋势可得,误判概率 P e r r P_{err} 随着 l l 增加趋近于0,即

lim l n 2 l = 0 \lim_{l\rightarrow \infty}\frac{n}{2^{l}} = 0 (3-10)

l l 值确定后, P e r r P_{err} 可通过(3-7)(3-8)(3-9)计算得出,且 P e r r > 0 P_{err}>0 。于是,存在概率 P e r r P_{err} 使得译码出的二进制序列不正确,但该序列却符合规律。

3.2.2 编码码率

以等概二进制序列为例,设序列长度为 L e n Len ,经方法一处理后,符号0的个数为 L e n Len ,符号1的个数为 1 2 L e n \frac{1}{2}Len 。用 φ ( 0 ) = 1 d , φ ( 1 ) = 1 \varphi\left(0 \right) = \frac{1}{d},\varphi\left( 1 \right) =1 对预处理后的二进制序列进行编码,则编码后的比特长度为 ( log 2 1 d ) L e n (-\log_{2}\frac{1}{d})Len

L e n log 2 φ ( 0 ) 1 2 L e n log 2 φ ( 1 ) = ( log 2 1 d ) L e n - Len\log_{2}{\varphi \left( 0 \right)} - \frac{1}{2}Len\log_{2}{\varphi\left( 1 \right)} = (-\log_{2}\frac{1}{d})Len (3-11)

d = 2 d = 2 时, log 2 1 d = 1 -\log_{2}\frac{1}{d} = 1 ,于是编码码率为 R = Len log 2 1 d Len = 1 R =\frac{\text{Len}}{-\log_{2}\frac{1}{d}\text{Len}} = 1 d = 2 d =2 时规律性添加的符号经编码被完全消除,即译码时无法使用规律来判断数据是否发生错误; d 2 d \rightarrow 2 时任何错误均可被发现,且码率 R 1 R \rightarrow 1 d < 2 d <2 时算术编码是有损的。

同理,等概二进制序列经方法二处理后,符号0的个数为 Len \text{Len} ,符号1的个数为 3 2 L e n \frac{3}{2}Len 。编码后的比特长度为 log 2 1 d L e n -\log_{2}\frac{1}{d}Len ,且 d = 3 d = 3 时码率最大, max R = L e n log 2 1 3 L e n 0.630929754 \max R =\frac{Len}{-\log_{2}\frac{1}{3}Len} \approx0.630929754 。当 d < 3 d <3 时,编译码过程是有损的。显然,预处理方法不同,码率不同。

根据3.1.1节的编码流程,在信道上传输的数据为 V V 值。译码时,按序获取 V V 值中连续 m m 个比特, V V 值中的比特数远大于 m m 。设存在一个最小的 l l ,记为 l m i n l_{min} ,于是译码 l m i n l_{min} 个比特的二进制序列,若序列符合规律,则当前 m m 个比特必然没有发生错误。我们定义 l m i n l_{min} 为最小检错长度。

3.2.3 最小检错长度

方法一中 d 2 d \geq 2 ,当 d 2 d \rightarrow 2 时, l min l_{\min} \rightarrow \infty ,即编码时 d d 越接近2,则需译码足够长的二进制序列才能判断 V V 值中连续 m m 个比特是否发生错误。方法一可以用极少的代价实现错误校验,在构建检错重传方法时具有很好的价值,但作为纠错码运算代价很高。因为方案一中连续译码出两个和两个以上符号1时才能发现错误,当连续译码出无限个符号0,这一错误情形将无法判断,所以当 d 2 d \rightarrow 2 时, l min l_{\min} \rightarrow \infty

方法二中,预处理后的二进制序列,编码 m log 2 1 d \frac{m}{-\log_{2}\frac{1}{d}} 个符号0必然输出 m m 个比特。令 c = m log 2 1 d c = \frac{m}{-\log_{2}\frac{1}{d}} ,译码时 c c 个符号0在序列中的分布状态未知。 c c 个符号0在二进制序列中的分布存在两种极端状态,完全稀疏分布如011011011…,此时 l min = 3 c l_{\min}= 3c ;完全密集分布如0101010…,此时 l min = 2 c l_{\min} = 2c 。显然,当 l min = 3 c l_{\min} =3c 时,能满足 c c 个符号0在二进制序列中的所有分布状态。当误比特发生在 m m 个比特的最后位置,则最多已经译码出 3 c 3c 个比特,然后仍需向后译码 3 c 3c 个比特的二进制序列,并判断序列是否符合规律。于是,当 l min = 6 c = 6 m log 2 1 d l_{\min}= 6c = \frac{-6m}{\log_{2}\frac{1}{d}} 时,才能完整判断 m m 个比特是否发生错误。由于每个符号0均被一个或两个符号1隔开,最大连续译码出一个符号0,且符号1没有信息量,只表达了预处理后二进制序列的形态特征,最大连续译码出两个符号1,所以方案二的检错方法更灵敏,检错长度只需 l min l_{\min} 比特。下面以方法二为基础分析BSC信道下的纠错方法。

3.2.4 最大纠错范围
每次固定译码 l min = 6 m log 2 1 d l_{\min} = \frac{-6m}{\log_{2}\frac{1}{d}} 个比特的二进制序列,若序列不符合规律,则错误必然发生在 l min 2 log 2 1 d = 3 m -\frac{l_{\min}}{2}\log_{2}\frac{1}{d} =3m (以当前 m m 个比特最后位置开始,向前 3 m 3m 个比特)个比特范围内。因为需要 3 m 3m 个比特才能译码出 l min l_{\min} 个比特二进制序列,若译码出的二进制序列不符合规律,则错误可能发生在当前的 m m 个比特中,也可能发生在后面相邻两 m m 个比特中,所以纠错范围为当前 m m 个比特最后位置开始,向前 3 m 3m 个比特范围内。在 l min l_{\min} 个比特的二进制序列中,若符号0密集分布,则符号0的个数为 l min 2 \frac{l_{\min}}{2} 。因 l min 2 \frac{l_{\min}}{2} 个符号0编码后的比特数最多,所以由 l min l_{\min} 个比特的二进制序列,编码后最多输出 l min 2 log 2 1 d = 3 m -\frac{l_{\min}}{2}\log_{2}\frac{1}{d} = 3m 个比特。令 S max = 3 m S_{\max} =3m ,则 S max S_{\max} 为最大纠错范围。

设BSC信道的转移概率为 ε \varepsilon ,即当错误发生时,发送的符号0以概率 ε \varepsilon 被接收为符号1,符号1以概率 ε \varepsilon 被接收为符号0。BSC的信道容量为 C = 1 H ( ε ) C= 1 - H(\varepsilon) ,其中 H ( ε ) = ε log 2 ε ( 1 ε ) log 2 ( 1 ε ) H\left( \varepsilon \right) = -\varepsilon\log_{2}\varepsilon - (1 - \varepsilon)\log_{2}{(1 -\varepsilon)} 。显然,若能准确的找到错误比特的位置,通过比特取非的方式可实现BSC信道下纠错,方法总结如下。

3.2.5 BSC信道下的纠错方法

在实验中,按序获取 V V 值中第 1 1 个到第 m m 个比特,共 m m 个比特。于是至少向后译码 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特的二进制序列。若 V V 值最后不足以译码 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特,可补充符号0后再译码 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特。根据3.1.1节符号0和符号1的个数在译码时已知,于是预处理后的二进制序列总长度(记为 max L e n \max{Len} )也已知,补充符号0后译码 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特,若大于 max L e n \max{Len} 的位置上译码出了符号1,则说明 V V 值最后 3 m 3m 个比特中发生了比特错误。然后判断 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特的二进制序列是否符合规律,若序列符合规律,则输出当前 m m 个比特译码出的二进制序列。若序列不符合规律,以第 m m 个比特位置开始,向前最多进行 3 m 3m 个比特的纠错,不够 3 m 3m 比特时按实际长度向前纠错。极端情形下,比特错误可能出现在 3 m 3m 个比特中的任意位置。

3 m 3m 个比特中最多出现 e e 个比特错误,则比特错误的位置总共有 C 3 m 1 + C 3 m 2 + + C 3 m e C_{3m}^{1} +C_{3m}^{2} + \ldots + C_{3m}^{e} C 3 m e = ( 3 m ) ! e ! ( 3 m e ) ! C_{3m}^{e} = \frac{(3m)!}{e!\left( 3m - e \right)!} )种可能性。将 C 3 m 1 + C 3 m 2 + + C 3 m e C_{3m}^{1} + C_{3m}^{2} + \ldots +C_{3m}^{e} 种可能性进行排序,先根据 e e 的值从小到大排序,然后根据错误位置从后向前排序,例如 m = 2 m= 2 e = 2 e = 2 时,用符号0代表正确位置,用符号1代表错误位置,则 C 6 1 + C 6 2 C_{6}^{1} +C_{6}^{2} 种可能性排序后结果如
000001 , 000010 , , 100000 , 000011 , 000101 , , 100001 , 000110 , 001010 , 000001,000010,…,100000,000011,000101,…,100001,000110,001010,…

显然,纠错过程就是按序遍历 C 3 m 1 + C 3 m 2 + + C 3 m e C_{3m}^{1} + C_{3m}^{2} + \ldots +C_{3m}^{e} 种可能性,每一种可能性中符号1代表错误比特的位置,将 3 m 3m 个比特对应位置进行比特取非。例如 m = 2 m= 2 e = 2 e =2 时,设 3 m 3m 个比特序列为101100,根据第1种可能性对101100进行比特取非得101101。
取非后 V V 值被更新,然后以首个取非位置为起点,获取新的 V V 值中 m m 个比特(记为 S S ),向后译码 6 m log 2 1 d \frac{-6m}{\log_{2}\frac{1}{d}} 个比特的二进制序列,判断序列是否符合规律。若序列不符合规律则检验下一种可能性。若序列符合规律则错误被纠正,则输出 S S 所译码出的二进制序列。于是 V V 值中第 1 1 个到第 m m 个比特通过纠错并译码,接着获取 V V 值中第 m + 1 m+ 1 个到第 2 m 2m 个比特进行纠错译码。依此迭代,直到纠错译码完成。

3.2.6 纠错能力分析(这里是基于狭义和广义信道容量分析的)

根据3.2.1节的分析, P err P_{\text{err}} 为纠错处理后的误比特率。编码概率确定时,编码码率为确定值。令 R = C R= C C C 为信道容量),设 d = 3 d = 3

1 + ε log 2 ε + ( 1 ε ) log 2 ( 1 ε ) = 1 log 2 ( 1 / 3 ) 1 + \varepsilon\log_{2}\varepsilon + \left( 1 - \varepsilon \right)\log_{2}\left( 1 - \varepsilon \right) = - \frac{1}{\log_{2}{(1/3)}} (3-12)

满足(3-12)的误比特率 ε \varepsilon 最大,记为 ε max \varepsilon_{\max} 。通过计算得 ε max = 0.0708452972684 \varepsilon_{\max}= 0.0708452972684 。令 ε = ε max \varepsilon = \varepsilon_{\max} , e = 3 m e = 3m ,当 m + m\rightarrow + \infty l min + l_{\min} \rightarrow +\infty ,根据(3-10)有 P e r r = 0 P_{err} =0 ,此时编码码率与信道容量相等,且所有错误可被纠正。

m m 的值确定,则 l min l_{\min} 确定, P e r r P_{err} 可计算得出,且 P e r r > 0 P_{err}> 0 。当 e = 3 m e = 3m 时,纠错译码后存在误比特率 P e r r P_{err} ,得

1 H ( P e r r ) log 2 ( 1 / 3 ) = 1 H ( ε ) - \frac{1 - H\left( P_{err} \right)}{\log_{2}{(1/3)}} = 1 - H(\varepsilon) (3-13)

其中 H ( P err ) = P err log 2 P err ( 1 P err ) log 2 ( 1 P err ) H\left( P_{\text{err}} \right) = -P_{\text{err}}\log_{2}P_{\text{err}} - (1 -P_{\text{err}})\log_{2}{(1 -P_{\text{err}})} 。存在唯一的 ε \varepsilon 使得(3-13)成立。

e < 3 m e < 3m ,则 3 m 3m 个比特中大于 e e 个比特错误的概率为

P e = 3 m i = e + 1 3 m ε i P_{e} = 3m\sum_{i = e + 1}^{3m}\varepsilon^{i} (3-14)

于是,当 m m 的值确定,且 e < 3 m e < 3m ,纠错处理后存在误比特率 P e + P e r r P_{e} +P_{err} 。因此

1 H ( P e + P e r r ) log 2 ( 1 / 3 ) = 1 H ( ε ) - \frac{1 - H\left( P_{e} + P_{err} \right)}{\log_{2}{(1/3)}} = 1 - H(\varepsilon) (3-15)

其中 H ( P e + P e r r ) = ( P e + P e r r ) log 2 ( P e + P e r r ) ( 1 P e P e r r ) log 2 ( 1 P e P e r r ) H\left( P_{e} + P_{err} \right) = - (P_{e} +P_{err})\log_{2}\left( P_{e} + P_{err} \right) - (1 - P_{e}- P_{err})\log_{2}{(1 - P_{e} -P_{err})} 。存在唯一的 ε \varepsilon 使得(3-15)成立。

4.实验
m = 32 m = 32 e = 7 e = 7 l = l min = 122 b i t l = l_{\min} = 122bit S max = 96 b i t S_{\max} =96bit 。由(3-7)(3-9)计算出 P e r r = 1.09791 1 0 22 P_{err} = 1.09791*10^{-22} 。当 ε = 1 0 3 \varepsilon = 10^{- 3} 时,由(3-14)可得, P e = 1.001001001 1 0 24 P_{e} = 1.001001001*10^{-24} 。于是 P e + P e r r = 1.10792001 1 0 22 P_{e} + P_{err} = 1.10792001*10^{-22} 。纠错处理后,误比特率从 1 0 3 10^{- 3} 降低到 1.10792001 1 0 22 1.10792001*10^{- 22}

4.1 实验方法
a. 随机生成41943040bit的随机文件(或序列)A。
b. 对文件A进行处理,“每个符号1后增加1个符号0”和“每个符号1后增加1个符号0,再每个符号0后增加1个符号1”,得到文件B。

c. 设符号0和符号1的编码概率为 φ ( 0 ) = 1 d , φ ( 1 ) = 1 \varphi\left( 0 \right) = \frac{1}{d},\varphi\left( 1 \right) = 1 。对文件B进行二进制算术编码,得到文件C。

d. 设一个误比特率 ε \varepsilon ,按比特顺序遍历文件C。每遍历1比特,由随机函数生成一个属于区间 [ 0 , 2 32 ) \lbrack 0,2^{32}) 的数字 d d 。若 d < ε 2 32 d < \varepsilon 2^{32} ,则对当前比特取非,模拟BSC信道,得文件D。

e. 以编码概率 φ ( 0 ) = 1 d , φ ( 1 ) = 1 \varphi\left( 0 \right) = \frac{1}{d},\varphi\left( 1 \right) = 1 ,检错长度 L = 122 L = 122 e = 7 e = 7 进行纠错译码,得文件E。

f. 比较文件B和文件E,得出译码后的误比特率(BER)和误块率(BLER)。

g. 删除规律性添加的符号,得到文件F。若所有错误被纠正,则文件F和文件A相同。

4.2 实验数据

实验一:根据方法一,设 d = 2 d = 2 φ ( 0 ) = 1 2 , φ ( 1 ) = 1 \varphi\left( 0 \right) =\frac{1}{2},\varphi\left( 1 \right) =1 ,对随机文件进行编码,编码后文件大小为41943304bit。编码码率 R = 41943040 41943304 0.9999937 R =\frac{41943040}{41943304} \approx0.9999937 ,验证了(3-8)的正确性。当 ε = 0 \varepsilon = 0 时,可无损编译码。

实验二:根据方法二,设 d = 3 d = 3 φ ( 0 ) = 1 3 , φ ( 1 ) = 1 \varphi\left( 0 \right) =\frac{1}{3},\varphi\left( 1 \right) =1 ,对随机文件进行编码,编码后文件大小为66478264bit。编码码率 R = 41943040 66478264 0.630928639 R =\frac{41943040}{66478264} \approx0.630928639 ,符合(3-8)的计算。当 ε = 0 \varepsilon = 0 时,可无损编译码。

实验三:根据方法一,设 d = 2.004 d = 2.004 ,则 φ ( 0 ) = 0.499 , φ ( 1 ) = 1 \varphi\left( 0 \right) =0.499,\varphi\left( 1 \right) =1 ,对随机文件进行编码,编码后文件大小为42064448bit。编码码率 R = 41943040 42064448 0.997113 R =\frac{41943040}{42064448} \approx 0.997113 ,由(3-8)可得 R = 0.99712 R =0.99712 。当 ε = 0 \varepsilon = 0 时,可无损编译码。当 ε > 0 \varepsilon >0 时,可检查出所有错误。

实验四:根据方法二,设 d = 3 d = 3 ,当 ε 1 0 3 \varepsilon \leq 10^{-3} 时,能完整纠正所有错误,如表1。

ε \varepsilon 比特错误数 纠错译码后的误比特率
1 0 3 10^{- 3} 66268 0
1 0 4 10^{- 4} 6621 0
1 0 5 10^{- 5} 655 0
1 0 6 10^{- 6} 86 0

(表1)

实验五:实验二中编码后的文件,以8Kbit为单位的数据块进行传输,重复传输文件10万次。当 ε 1 0 3 \varepsilon\leq 10^{- 3} 时,误块率(BLER)为0,如表2。

ε \varepsilon 误块率(BLER)
1 0 3 10^{- 3} 0
1 0 4 10^{- 4} 0
1 0 5 10^{- 5} 0
1 0 6 10^{- 6} 0
0 0

(表2)

实验六: φ ( 0 ) = 1 3.999 , φ ( 1 ) = 1 \varphi\left( 0 \right) = \frac{1}{3.999},\varphi\left( 1 \right) =1 时, R 0.5 R \approx 0.5 。当 ε = 0 \varepsilon = 0 时,可无损编译码。当 ε 1 0 3 \varepsilon\leq 10^{- 3} 时,纠错译码后的误比特率为0,且误块率(BLER)为0。

实验七:方法一中设 φ ( 0 ) = 1 1.99 , φ ( 1 ) = 1 \varphi\left( 0 \right) = \frac{1}{1.99},\varphi\left( 1\right) = 1 ,当 ε = 0 \varepsilon = 0 时,无法还原数据。方法二中设 φ ( 0 ) = 1 2.99 , φ ( 1 ) = 1 \varphi\left(0 \right) = \frac{1}{2.99},\varphi\left( 1 \right) = 1 ,当 ε = 0 \varepsilon =0 时,无法还原数据。

4.3 实验结论

通过实验,方法一中,编码概率为 φ ( 0 ) < 1 2 , φ ( 1 ) = 1 \varphi\left( 0 \right) <\frac{1}{2},\varphi\left( 1 \right) = 1 ,且 φ ( 0 ) 0.5 \varphi\left( 0 \right)\rightarrow0.5 时可以用极少的代价实现错误校验。方法二的纠错方法中,编码概率为 φ ( 0 ) = 1 3 , φ ( 1 ) = 1 \varphi\left(0 \right) = \frac{1}{3},\varphi\left( 1 \right) = 1 时,编码码率 R 0.630929754 R \approx0.630929754 。编码概率为 φ ( 0 ) = 1 3.999 , φ ( 1 ) = 1 \varphi\left( 0 \right) =\frac{1}{3.999},\varphi\left( 1 \right) = 1 时,编码码率 R 0.5 R \approx0.5 。两种编码概率下,均表现出优良的纠错能力。BSC信道下,误比特率为 ε 1 0 3 \varepsilon\leq 10^{-3} 时,纠错译码后的误比特率(BER)为0,且误块率(BLER)为0。本方案具有如下几个特征

1). 线性编译码,当 m = 32 m = 32 时,获取218个比特开始纠错译码。

2). 码长可自定义,即 m m 可自定义。

3). 同一个方案实现检错和纠错,当 3 m 3m 个比特中错误数大于设定的 e e 值时,仅需重传96个比特。

4). 可根据信道状况自适应设置 e e 的值,实现更高纠错能力,理论上可完整纠错。

5.总结

本文提出一种思路,对等概二进制序列规律性添加符号。利用处理后二进制序列的规律性和算术编码对错误很敏感实现纠错。在BSC信道下,纠错效果优良,但编码码率比较低。规律性添加符号的方法有很多,未来可寻找一种平衡纠错能力和编码码率的预处理方法。

参考
[1] Ian H.Witten, Radford M.Neal,John G.Cleary. Arithmetic Coding for Data
Compression.Communications of the ACM. 1987,30(6):520~539.

[2] G. N. N. Martin, Range encoding: an algorithm for removing redundancy from
a digitised message.
Video & Data Recording Conference, held in Southampton
July 24-27 1979.

[3] C. E. Shannon. A mathematical theory of communication. Bell Syst. Tech.
J., 27:379–423,623–656, 1948.

[4] Erdal Arikan. Channel Polarization: A Method for Constructing
Capacity-Achieving Codes for Symmetric Binary-Input Memoryless Channels. IEEE
Transactions on Information Theory,
Volume:55 , Issue:7, 3051 - 3073, July
2009.

[5] Marek Śmieja. Weighted approach to general entropy function. IMA Journal of
Mathematical Control and Information
, Volume: 32 , Issue: 2 ,329 - 341, June
2015.


  1. 王杰林(1985-),男,湖南平江人,主要研究领域为随机过程、概率论、信息论以及各种编解码算法。Email:[email protected] ↩︎

发布了27 篇原创文章 · 获赞 38 · 访问量 7577

猜你喜欢

转载自blog.csdn.net/wjlxueshu/article/details/89844345
今日推荐