前言:
我的個人聽課記錄,畢竟是初學,錯誤在所難免,我知道了錯誤會改正更新,歡迎指導也歡迎一起討論學習。
{n,r}即{k+r,r}
1.簡單奇偶校驗
只能檢錯,不能糾錯。且只能檢錯奇位錯誤,不能確定出錯的位置。
2.交叉奇偶校驗
可檢錯也可糾錯了。
例:偶校驗
0101 ——> 0
1111 ——> 1
|||| |
1011 ——> 1
可以判斷第二行第四列出錯,所以資訊應該是:01011110,於是計算機可以進行糾錯。
有兩種形式:(6,3)(7,4)
可設密碼
M=D
×
\times
× G中,D是資訊碼,G是生成矩陣。(生成矩陣可以自己設定,由此決定這可以來設密碼)
G={ Ik,P }
H={ PT, Im}, H 是校驗矩陣,
校驗子:S=B
×
\times
× HT
例題:(6,3)
|1 1 0 1 0 1|
生成矩陣為:G= |0 1 0 0 1 1|
|0 0 1 1 0 1|
(1)將101進行編碼,
(101)* G=111000 (互斥或運算)
3位的資訊碼一共有八種,各自 * G得到對應的海明碼編碼。
(2)已知生成的編碼為 A= 110101,求它的資訊碼 m 。
設 m =(m2,m1,m0)
則 m * G = ( m2,m^m1,m0,m2^m0,m1,m2^m1^m0 )(^為互斥或)
若 m 用 a5a4a3a2a1a0 表示,
則m2=a5=1,m1=a2=0,m0=a3=0,所以 m=100
(3)得到的編碼 B= 100101,對其檢糾錯並譯碼。
第一步:保證G中Ik為「單位矩陣」,即只有主對角線是1.所以需要將G進行r1^r2(互斥或)運算得到
|1 0 0 1 1 0|
G= |0 1 0 0 1 1|
|0 0 1 1 0 1|
第二步:求H的轉置行列式 HT
|110|
|011|
HT(H的轉置)= |101|
|100|
|010|
|011|
第三步:求校驗子
S=B*HT=011
第四步:找出正確編碼。
由糾錯表可知011代表a3出錯,(記住111代表不止一位出錯,無法糾錯。)
於是我們知道正確的編碼是 A= 101101
(由(2)得)則m2=a5=1,m1=a2=0,m0=a3=1,所以 m=101
ps:(2)中編碼為A,(3)中編碼為B,是有區別的。
一般用A表示代表沒有錯,不用檢糾錯;B表示不確定,就需要檢糾錯。
(6,3)檢糾錯能力:檢錯兩位,糾錯1位。
不能設密碼了。
例題:(7,4)
(1)選擇生成多項式為1011,把4位元有效資訊1100編成CRC碼。
準備一:
表示生成多項式:1011=X3+X1+X0=X3+X+1
準備二:
表示資訊碼:1100=X3+X2
準備三:
確定2n-k : X7-4 = X3
計算:
求校驗碼:
r(x)=(X3+X2) X3mod (X3+X+1)=x,
x代表10,要三位,則補0,即010
出結果:1100 010
(2)若收到 B=1101010,是否出錯?
準備一:
表示生成多項式:1011=X3+X+1
準備二:
表示B= X6+X5+X3+X
計算:
( X6+X5+X3+X )mod ( X3+X+1 )
= x+1
x+1代表11,空位補0,即011
結果:011不是0,出錯了。
例:求「A」,用CRC(7,4)表示。
A的ASCII碼是41,即
01000001,分成四位有兩份。
0100用CRC表示有7位,
0001用CRC表示有7位,
但計算機中儲存兩個位元組,16位元,於是補0.
0 ( 0100CRC)7位 | 0 (0001CRC)7位
一共就有16位元了。
·
·
·
·
·
·