線性分組碼與卷積碼的區別
在資料通訊中,資料從客戶端傳輸到接收端。在此傳輸過程中,由於網路問題、干擾和其他因素,可能會發生錯誤。因此,需要檢測和糾正錯誤。對於錯誤檢測和糾正,我們可以使用各種方法,例如線性碼和卷積碼。線性碼是主機之間傳輸位元錯誤糾正的有效方法,而卷積碼則以及時的方式進行編碼。
什麼是線性碼?
分組碼是一種在分組內對資料進行編碼的糾錯碼,它接收k個輸入位元併產生n個輸出位元。線性分組碼是一種滿足任何兩個碼字之和也是另一個碼字的條件的分組碼。這意味著,如果我們有兩個碼字c1和c2,那麼它們的和也是該碼中的有效碼字。線性碼分為兩種主要型別:
分組碼
卷積碼
這種特性源於線性分組碼基於線性代數,並且碼字構成線性子空間。換句話說,所有碼字的集合可以透過取一組基碼字的線性組合來生成。由於任何兩個碼字的和只是基碼字的另一種線性組合,因此它也必須是一個有效的碼字。此屬性在解碼中非常有用,因為它允許使用高效的演算法來糾正接收資料中的錯誤。
線性編碼示例——漢明碼
漢明碼是一種線性碼,有助於檢測兩位錯誤。它可以檢測和糾正單位元變化。當序列中發生兩位或多位變化(稱為突發位)時,它無法糾正。在原始碼中,我們在序列之間新增冗餘位以確保安全傳輸。在傳送端,原始碼對包含冗餘位的位元序列進行編碼,並在接收端進行解碼。這些位充當錯誤檢測方法的虛擬位。
漢明碼的應用
它用於電信行業以檢測和糾正錯誤。
它廣泛用於衛星和計算機記憶體。
什麼是卷積碼?
編碼器接收資料位元流,並將布林函式應用於流中的當前位元和先前位元以生成輸出碼字序列。輸出碼字也稱為奇偶校驗符號。卷積碼分為兩種型別:
系統卷積碼
非系統卷積碼
這意味著,卷積碼不是將資料分成固定大小的分組並分別對每個分組進行編碼,而是連續地對到達的資料進行編碼。這是透過將布林多項式函式應用於資料流中的當前位元和先前位元來生成輸出碼字序列實現的。
與分組碼(其中每個分組的編碼獨立於先前的分組)相反,卷積碼在生成輸出碼字時會考慮資料流中的先前位元。這允許更有效地編碼和解碼長資料序列。
線性碼和卷積碼的區別
基本引數 |
線性碼 |
卷積碼 |
---|---|---|
輸入位元 |
線性碼接收k個較大的輸入位元併產生n個較大的輸出位元。 |
在卷積碼中,它接收較小的位元作為輸入併產生較大的輸出位元。 |
資訊位元 |
分組的每個位元都不依賴於之前的位元。 |
這些位元相互依賴。 |
編碼 |
分組的當前位元在編碼時不依賴於先前狀態。 |
當前位元的編碼依賴於之前的位元。 |
結構 |
它取決於位元分組。 |
它取決於當前位元和一些之前的位元。 |
糾錯 |
用於糾正分組內的多個錯誤。 |
它糾正卷積碼中發生的及時錯誤。 |
解碼 |
隨著分組大小根據位元數增加,解碼使結構變得複雜。 |
解碼的複雜度隨著碼的有限長度而增加。 |
應用 |
它用於發生突發錯誤的資料儲存和傳輸系統。 |
它用於隨時間隨機發生錯誤的通訊系統。 |
結論
位元錯誤和位元中的錯誤對於錯誤檢測和糾正非常有用,它是一種簡單的方法。一些線性碼包括漢明碼、奇偶校驗碼、迴圈碼和重複碼。儘管線性碼和卷積碼都用於錯誤檢測和糾正方法,但它們使用不同的演算法來實現。