本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。
文章目录
- 循环码生成多项式与生成矩阵
- 系统码生成矩阵的构造
- 系统码的循环码生成矩阵
- 循环码的监督 (校验) 矩阵
循环码生成多项式与生成矩阵
定义:记 C ( x ) \mathrm{C}(x) C(x) 为 (n, k) 循环码的所有码字对应的多项式的集合, 若 g(x) 是 C ( x ) \mathrm{C}(x) C(x) 中除 0 多项式以外次数最低的多项式, 则称 g(x) 为这个循环码的生成多项式。
定理1:
(
n
,
k
)
(\boldsymbol{n}, \boldsymbol{k})
(n,k) 循环码中, 必定存在一个次数最小的唯一的码多项式g(x) , 称为生成多项式,
g
(
x
)
=
x
r
+
g
r
−
1
x
r
−
1
+
⋯
+
g
1
x
+
1
g(x)=x^{r}+g_{r-1} x^{r-1}+\cdots+g_{1} x+1
g(x)=xr+gr−1xr−1+⋯+g1x+1
其中:
r
=
n
−
k
r=n-k
r=n−k .
该码集中任意码字的码多项式必为g(x)的倍式。
非系统循环码的编码:
c
(
x
)
=
u
(
x
)
g
(
x
)
c(x)=u(x) g(x)
c(x)=u(x)g(x)
设某 (7,4) 循环码的生成多项式为 g ( x ) = x 3 + x + 1 g(x)=x^{3}+x+1 g(x)=x3+x+1,问信息串 0110 的循环码是什么?
解:
c ( x ) = u ( x ) g ( x ) = ( x 2 + x ) ( x 3 + x + 1 ) = x 5 + x 4 + x 3 + x c(x)=u(x) g(x)=(x^{2}+x)(x^{3}+x+1)=x^{5}+x^{4}+x^{3}+x c(x)=u(x)g(x)=(x2+x)(x3+x+1)=x5+x4+x3+x
故码字为: 0111010
定理2: 当且仅当 g(x) 是 x n + 1 x^{n+1} xn+1 的 r = n − k r=n-k r=n−k 次因式时, g(x)是(n, k)循环码的生成多项式。
定理3: (n, k) 循环码的校验多项式为
h
(
x
)
=
x
n
+
1
g
(
x
)
=
h
k
x
k
+
h
k
−
1
x
k
−
1
+
⋯
+
h
1
x
+
h
0
\begin{array}{l} h(x)=\frac{x^{n}+1}{g(x)} \\ =h_{k} x^{k}+h_{k-1} x^{k-1}+\cdots+h_{1} x+h_{0} \end{array}
h(x)=g(x)xn+1=hkxk+hk−1xk−1+⋯+h1x+h0
写出下面(7,3)循环码的生成多项式
g
(
x
)
=
x
4
+
x
3
+
x
2
+
1
a
r
r
o
w
0011101
g(x)=x^{4}+x^{3}+x^{2}+1 arrow 0011101
g(x)=x4+x3+x2+1arrow0011101
(1) 生成多项式、生成矩阵
循环码生成多项式的特点:
- g(x) 的 0 次项是 1 ;
- g(x) 唯一确定, 即它是码多项式中除 0 多项式以外次数最低的多项式;
- 循环码每一码多项式都是 g(x) 的倍式, 且每一个小于等于 (n-1) 次的 g(x) 倍式一定是码多项式;
- g(x) 的次数为 (n-k) ;
- g(x) 是 x n + 1 x^{n}+1 xn+1 的一个因子。
为了保证构成的生成矩阵 G 的各行线性不相关, 通常用生成多项式 g(x) 来构造生成矩阵; 若码多项式为降幂排列,
g
(
x
)
=
g
n
−
k
x
n
−
k
+
g
n
−
k
−
1
x
n
−
k
−
1
+
⋯
+
g
1
x
+
g
0
,
r
=
n
−
k
C
(
x
)
=
u
G
(
x
)
=
(
u
k
−
1
u
k
−
2
⋯
u
0
)
G
(
x
)
=
u
k
−
1
x
k
−
1
g
(
x
)
+
u
k
−
2
x
k
−
2
g
(
x
)
+
⋯
+
u
0
g
(
x
)
G
(
x
)
=
[
x
k
−
1
g
(
x
)
x
k
−
2
g
(
x
)
⋮
g
(
x
)
]
r
i
g
h
t
a
r
r
o
w
G
=
[
g
r
g
r
−
1
⋯
g
1
g
0
0
0
⋯
0
0
g
r
g
r
−
1
⋯
g
1
g
0
0
⋯
0
⋮
⋮
0
⋯
0
0
g
r
g
r
−
1
⋯
g
1
g
0
]
\begin{array}{l} g(x)=g_{n-k} x^{n-k}+g_{n-k-1} x^{n-k-1}+\cdots+g_{1} x+g_{0}, r=n-k \\ C(x)=\mathbf{u G}(x)=(u_{k-1} u_{k-2} \cdots u_{0}) \mathbf{G}(x) \\ =u_{k-1} x^{k-1} g(x)+u_{k-2} x^{k-2} g(x)+\cdots+u_{0} g(x) \\ G(x)=[\begin{array}{c} x^{k-1} g(x) \\ x^{k-2} g(x) \\ \vdots \\ g(x) \end{array}] rightarrow G=[\begin{array}{ccccccccc} g_{r} & g_{r-1} & \cdots & g_{1} & g_{0} & 0 & 0 & \cdots & 0 \\ 0 & g_{r} & g_{r-1} & \cdots & g_{1} & g_{0} & 0 & \cdots & 0 \\ & \vdots & & & & & \vdots & & \\ 0 & \cdots & 0 & 0 & g_{r} & g_{r-1} & \cdots & g_{1} & g_{0} \end{array}] \\ \end{array}
g(x)=gn−kxn−k+gn−k−1xn−k−1+⋯+g1x+g0,r=n−kC(x)=uG(x)=(uk−1uk−2⋯u0)G(x)=uk−1xk−1g(x)+uk−2xk−2g(x)+⋯+u0g(x)G(x)=[xk−1g(x)xk−2g(x)⋮g(x)]rightarrowG=[gr00gr−1gr⋮⋯⋯gr−10g1⋯0g0g1gr0g0gr−100⋮⋯⋯⋯g100g0]
显然, 上式不符合
G
=
(
I
k
:
Q
)
\mathbf{G}=(\mathbf{I}_{k}: \mathbf{Q})
G=(Ik:Q) 形式, 所以此生成矩阵不是典型形式。
系统码生成矩阵的构造
系统码-信息位在码字高位, 因此编码时需要先将信息位置于码字高位, 即 u(x) \bullet x^{n-k} 。 码字低位为校验位,如何获得?
c
(
x
)
m
o
d
g
(
x
)
=
0
c
(
x
)
=
u
(
x
)
⋅
x
n
−
k
+
r
(
x
)
0
=
{
[
u
(
x
)
x
n
−
k
]
m
o
d
g
(
x
)
+
r
(
x
)
}
=
r
(
x
)
[
u
(
x
)
x
n
−
k
]
m
o
d
g
(
x
)
\begin{array}{c} c(x)_{\bmod g(x)}=0 \\ c(x)=u(x) \cdot x^{n-k}+r(x) \\ \mathbf{0}=\{[u(x) x^{n-k}]_{\bmod g(x)}+r(x)\} \end{array} \quad \stackrel{r(x)}{=}[u(x) x^{n-k}] \bmod g(x)
c(x)modg(x)=0c(x)=u(x)⋅xn−k+r(x)0={[u(x)xn−k]modg(x)+r(x)}=r(x)[u(x)xn−k]modg(x)
(2) 系统循环码
系统循环码的编码:
a. 选择一信息码多项式 μ ( x ) \mu(x) μ(x) , 使 r ( x ) = x n − k μ ( x ) m o d g ( x ) \quad r(x)=x^{n-k} \mu(x) \bmod g(x) r(x)=xn−kμ(x)modg(x)
b. 产生系统循环码式 c ( x ) = x n − k μ ( x ) + r ( x ) \mathrm{c}(x)=x^{n-k} \mu(x)+r(x) c(x)=xn−kμ(x)+r(x)
有一 (15, 11) 汉明循环码, 其生成多项式 g ( x ) = x 4 + x + 1 g(x)=x^{4}+x+1 g(x)=x4+x+1 , 若输入信息分组为 (10010010010), 求出 (15,11) 系统循环码字。
解: u ( x ) = x 10 + x 7 + x 4 + x u(x)=x^{10}+x^{7}+x^{4}+x u(x)=x10+x7+x4+x
x n − k u ( x ) = x 4 u ( x ) = x 14 + x 11 + x 8 + x 5 r ( x ) = [ x 4 u ( x ) ] m o d g ( x ) = x 2 ∴ c ( x ) = x 14 + x 11 + x 8 + x 5 + x 2 c = 10010010010 ( 0100 ) 监督位 \begin{array}{l} x^{n-k} u(x)=x^{4} u(x)=x^{14}+x^{11}+x^{8}+x^{5} \\ r(x)=[x^{4} u(x)] \bmod g(x)=x^{2} \\ \therefore c(x)=x^{14}+x^{11}+x^{8}+x^{5}+x^{2} \\ c=10010010010(0100)监督位 \end{array} xn−ku(x)=x4u(x)=x14+x11+x8+x5r(x)=[x4u(x)]modg(x)=x2∴c(x)=x14+x11+x8+x5+x2c=10010010010(0100)监督位
非系统码: c ( x ) = u ( x ) g ( x ) = x 14 + x 10 + x 7 + x 4 + x 2 + x c(x)=u(x) g(x)=x^{14}+x^{10}+x^{7}+x^{4}+x^{2}+x c(x)=u(x)g(x)=x14+x10+x7+x4+x2+x c=1000100100101100
已知某循环码生成多项式为 g ( x ) = x 8 + x 6 + x 4 + x 2 + 1 g(x)=x^{8}+x^{6}+x^{4}+x^{2}+1 g(x)=x8+x6+x4+x2+1,那么采用此多项式生成循环码时,校验位有 [8] 位。
已知某循环码生成多项式为 g ( x ) = x 8 + x 6 + x 4 + x 2 + 1 g(x)=x^{8}+x^{6}+x^{4}+x^{2}+1 g(x)=x8+x6+x4+x2+1,证明该多项式是 x 10 + 1 x^{10}+1 x10+1的一个因式。 直接长除即可,这里不多赘述。
请写出生成多项式为 g ( x ) = x 8 + x 6 + x 4 + x 2 + 1 g(x)=x^{8}+x^{6}+x^{4}+x^{2}+1 g(x)=x8+x6+x4+x2+1的系统型循环码 (10 ,2) 的码表。并说明该码至少能纠几位错。
d min d_{\min } dmin=5, 能纠2位错
系统码的循环码生成矩阵
G ( x ) = [ x n − 1 + ( x n − 1 ) m o d g ( x ) x n − 2 + ( x n − 2 ) m o d g ( x ) ⋮ x n − i + ( x n − i ) m o d g ( x ) ⋮ g ( x ) ] = [ 1 0 ⋯ 0 r 1 , 1 r 1 , 2 ⋯ r 1 , n − k 0 1 ⋯ 0 r 2 , 1 r 2 , 2 ⋯ r 2 , n − k ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ 0 0 ⋯ 1 r k , 1 r k , 2 ⋯ r k , n − k ] G(x)=[\begin{array}{c} x^{n-1}+(x^{n-1})_{\bmod g(x)} \\ x^{n-2}+(x^{n-2})_{\bmod g(x)} \\ \vdots \\ x^{n-i}+(x^{n-i})_{\bmod g(x)} \\ \vdots \\ g(x) \end{array}]=[\begin{array}{cccccccc} 1 & 0 & \cdots & 0 & r_{1,1} & r_{1,2} & \cdots & r_{1, n-k} \\ 0 & 1 & \cdots & 0 & r_{2,1} & r_{2,2} & \cdots & r_{2, n-k} \\ \vdots & \vdots & & \vdots & \vdots & \vdots & & \vdots \\ 0 & 0 & \cdots & 1 & r_{k, 1} & r_{k, 2} & \cdots & r_{k, n-k} \end{array}] G(x)=[xn−1+(xn−1)modg(x)xn−2+(xn−2)modg(x)⋮xn−i+(xn−i)modg(x)⋮g(x)]=[10⋮001⋮0⋯⋯⋯00⋮1r1,1r2,1⋮rk,1r1,2r2,2⋮rk,2⋯⋯⋯r1,n−kr2,n−k⋮rk,n−k]
某 (7,4) 循环码的生成多项式是 g ( x ) = x 3 + x + 1 g(x)=x^{3}+x+1 g(x)=x3+x+1 , 求系统码的生成矩阵。
解:
(
x
6
)
m
o
d
g
(
x
)
=
x
2
+
1
(
x
5
)
m
o
d
g
(
x
)
=
x
2
+
x
+
1
(
x
4
)
m
o
d
g
(
x
)
=
x
2
+
x
a
r
r
o
w
G
=
[
1
0
0
0
1
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
0
0
0
0
1
0
1
1
]
\begin{array}{l} (x^{6}) \bmod g(x)=x^{2}+1 \\ (x^{5}) \bmod g(x)=x^{2}+x+1 \\ (x^{4}) \bmod g(x)=x^{2}+x \end{array} \quad arrow G=[\begin{array}{lllllll} 1 & 0 & 0 & 0 & 1 & 0 & 1 \\ 0 & 1 & 0 & 0 & 1 & 1 & 1 \\ 0 & 0 & 1 & 0 & 1 & 1 & 0 \\ 0 & 0 & 0 & 1 & 0 & 1 & 1 \end{array}]
(x6)modg(x)=x2+1(x5)modg(x)=x2+x+1(x4)modg(x)=x2+xarrowG=[1000010000100001111001111101]
循环码的监督 (校验) 矩阵
关系: G H T = 0 \boldsymbol{G} \boldsymbol{H}^{T}=\mathbf{0} GHT=0 。
a. 监督矩阵构造:由性质
x
n
+
1
=
g
(
x
)
h
(
x
)
x^{n}+1=g(x) h(x)
xn+1=g(x)h(x) ;
h
(
x
)
=
h
k
x
k
+
h
k
−
1
x
k
−
1
+
…
+
h
1
x
+
h
0
H
=
[
h
0
h
1
⋯
h
k
0
⋯
0
0
h
0
h
1
⋯
h
k
⋯
0
⋮
⋮
0
0
⋯
h
0
h
1
⋯
h
k
]
\begin{array}{l} h(x)=h_{k} x^{k}+h_{k-1} x^{k-1}+\ldots+h_{1} x+h_{0} \\ H=[\begin{array}{ccccccc} h_{0} & h_{1} & \cdots & h_{k} & 0 & \cdots & 0 \\ 0 & h_{0} & h_{1} & \cdots & h_{k} & \cdots & 0 \\ & \vdots & & & & \vdots & \\ 0 & 0 & \cdots & h_{0} & h_{1} & \cdots & h_{k} \end{array}] \\ \end{array}
h(x)=hkxk+hk−1xk−1+…+h1x+h0H=[h000h1h0⋮0⋯h1⋯hk⋯h00hkh1⋯⋯⋮⋯00hk]
b. 利用循环码的特点来确定监督矩阵 H :
由于 (n, k) 循环码中 g(x) 是 x n + 1 x^{n+1} xn+1 的因式, 因此可令: h ( x ) = x n + 1 g ( x ) = h k x k + h k − 1 x k − 1 + ⋯ + h 1 x + h 0 h(x)=\frac{x^{n}+1}{g(x)}=h_{k} x^{k}+h_{k-1} x^{k-1}+\cdots+h_{1} x+h_{0} h(x)=g(x)xn+1=hkxk+hk−1xk−1+⋯+h1x+h0 监督矩阵表示为:
H ( x ) = [ x n − k − 1 h ∗ ( x ) x n − k − 2 h ∗ ( x ) ⋮ x h ∗ ( x ) h ∗ ( x ) ] H(x)=[\begin{array}{c} x^{n-k-1} h^{*}(x) \\ x^{n-k-2} h^{*}(x) \\ \vdots \\ x h^{*}(x) \\ h^{*}(x) \end{array}] H(x)=[xn−k−1h∗(x)xn−k−2h∗(x)⋮xh∗(x)h∗(x)]
h ∗ ( x ) = h 0 x k + h 1 x k − 1 + h 2 x k − 2 + ⋯ + h k − 1 x h^{*}(x)=h_{0} x^{k}+h_{1} x^{k-1}+h_{2} x^{k-2}+\cdots+h_{k-1} x h∗(x)=h0xk+h1xk−1+h2xk−2+⋯+hk−1x
参考文献:
- Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
- Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
- 周炯槃. 通信原理(第3版)[M]. 北京:北京邮电大学出版社, 2008.
- 樊昌信, 曹丽娜. 通信原理(第7版) [M]. 北京:国防工业出版社, 2012.