線性分組碼的編碼解碼

2021-10-05 10:16:35 字數 2517 閱讀 2456

線性分組碼是通訊原理中已經學到的乙個概念,為了更好的編寫**,我又重新回顧了一次線性分組碼的概念,網上的概念大多很亂,下面我進行乙個梳理。

以(7,4)漢明碼為例:

(7,4)漢明碼的來歷:在資訊位後面增加監督碼元,可以指示錯誤碼元的位置。(7,4)漢明碼資訊位為4位,監督位為3位,監督位有2^3=8種組合。如果只錯一位,則可用其中一種表示無錯,其餘7種表示錯碼可能的7個位置,見下表。

根據碼元錯誤與校正子的關係可以列出監督方程,例如s1與a6 a5 a3 a2有關。

將監督方程變形,將校正位左移,可以得出生成矩陣。

錯誤圖樣是接收端為了指示錯碼的位置,它可與校正子對應s=eh^t。傳送碼為a,接收碼為b,錯誤圖樣e=b-a。

根據以上,對編碼解碼的重要概念已經有了基本的了解,下面是matlab**及其解析。

clc;clear

%編碼過程g=[

1011

1;01

101]

%input

('請輸入生成矩陣g='

)[k,n]

=size(g)

;%生成矩陣的行數是資訊位數 列數是編碼位數

r=n-k;

%判斷傳送資訊的有效性m=[

0001

1011

]%input

('請輸入需傳送的資訊m=');

l=length(m);if

(mod(l,k)

) disp(

'輸入的資訊有誤'

)%一組首席資訊官度為k 總資訊位l 必須為k的整數倍

else

num=l/k;

%num表示總共傳遞的資訊組數

end%將輸入訊號的行向量轉化為矩陣,矩陣每一行為一組資訊

m_col=

;for i=

1:num

m_col(i,:)

=m(k*

(i-1)+

1:i*k)

;end

m=m_col;

%求監督矩陣h

a=mod(m*g,2)

;%出現2要取餘變0 編碼矩陣a=m*g

q=g(

:,k+

1:n)

;%生成矩陣g=

[ik|q]

h=[q',eye(r)];%h=[p|tr]其中p=q'

disp(

'編碼矩陣');a

disp(

'監督矩陣');h

%解碼過程b=[

1000

0011

0110

1111

0010

];%input

('請輸入接收序列b='

)%將接收訊號的行向量轉化為矩陣,矩陣每一行為一組資訊

b_col=

;for i=

1:num

b_col(i,:)

=b(n*

(i-1)+

1:i*n)

;end

b=b_col;

%得出錯誤圖樣

s=mod(b*h',2)

;%s為校正子

e=s*pinv(h');%s=eh' e為錯誤圖樣

%以0.5為界,絕對值小於視為未出錯 大於視為出錯

for i=

1:num

for j=1:n

if(e(i,j)

>

0.5-eps)

e(i,j)=1

;else

e(i,j)=0

; end

endendresall=mod(b+e,2)

;%recall 為糾正後的結果 只有 0

1 錯一位是 0變1

1變0

resnew=resall(:,

1:2)

;%renew取前兩列為解碼的最終結果

disp(

'校正子');s

disp(

'差錯圖樣');e

disp(

'解碼結果'

);resnew

以下是執行結果:

通過結果可以看出監督矩陣,生成矩陣,校正子,錯誤圖樣的特點和它們之間的關係;可以檢驗解碼的正確性;可以通過控制錯碼位數來觀察線性分組碼編碼解碼的效能,當發生一位錯碼時,可以通過錯誤圖樣進行糾正。

線性分組碼

分組碼的基本原理是將資訊碼分成k 位元 符號 一組,然 後將每組的位元 符號 數擴充套件成n n k 也就是說 在資訊位元 符號 中插入n k 個位元 符號 的冗餘資訊,這樣的分組碼常記作 n,k 碼。碼字長度 n 校驗位長度 n k 資訊位長度 k 位元速率r k n 編碼效率 校驗方程 線性分組...

大話線性分組碼編碼技術

從概念上,我們知道所謂編碼就是根據資訊字對映到碼字,如果這一對映是代數關係確定和唯一的,就稱為線性。這乙個過程用數學表達就是資訊矩陣乘生成矩陣 當然從多項式角度也是這樣,因為多項式和矩陣時表達的兩種方式。具體到實現時,一般我們會考慮用c或者matlab來輔助實現或者 在硬體邏輯上實現時會考慮一些處理...

關於BCD碼的編碼和解碼

1 bcd 碼 binary coded decimal 二到十進位制編碼 計算機內部多採用二進位制表示和處理數值資料,因此在計算機輸入和輸出資料時,就要進行進製的轉換處理。用 4位二進位制數來表示 1位十進位制數中的 0 9這 10個數碼,簡稱 bcd碼,即 bcd bcd碼編碼方法很多,通常採用...