Loading AI tools
来自维基百科,自由的百科全书
BCH碼(BCH codes、Bose–Chaudhuri–Hocquenghem codes)為取自Bose、Ray-Chaudhuri與Hocquenghem的縮寫,是編碼理論尤其是糾錯碼中研究得比較多的一種編碼方法。用術語來說,BCH碼是用於校正多個隨機錯誤模式的多級、循環、錯誤校正、變長數字編碼。BCH碼也可以用於質數級或者質數的冪級的多級相移鍵控。11級的BCH碼已經用於表示10進制數外加一個符號位。
BCH 碼使用有限域上的域論與多項式。為了檢測錯誤可以構建一個檢測多項式,這樣接收端就可以檢測是否有錯誤發生。
要構建一個能夠檢測、校正兩個錯誤的 BCH 碼,我們要使用有限域 GF(16) 或者 Z2[x]/<x4 + x + 1>。如果 α 是 m1(x) = x4 + x + 1 的一個根,那麼 m1 就是 α 的極小多項式,這是因為
如果要構建一個能夠糾正一個錯誤的 BCH 碼,那麼就使用 m1(x),這個代碼就是所有滿足
構建碼字為
這樣多項式為
我們將它稱為 CI。
然後就要找出 CR 滿足 CR=CI (mod m1,3(x))=c7+c6+...+c0
這樣就得到待發的碼字 C(x) = CI+CR (mod m1,3(x)) = 0
例如,如果我們要對 (1,1,0,0,1,1,0) 進行編碼
然後用 m1,3(x) 除以(這裡的除法是多項式除法)CI ,得到結果為 CR(x),在Z2域中,我們可以算出 CR為
這樣,待發的碼字為
BCH 的解碼過程可以分為以下四步
假設我們收到一個碼字向量 r,即多項式 R(x))。
如果沒有錯誤,那麼 R(α)=R(α3)=0
如果有一個錯誤,例如 r=c+ei,其中 ei 表示 R14 的第 i個基向量 於是
這樣就可以糾正錯誤。α 的指數顯示的數據位變化可以幫助我們校正錯誤。
如果有兩個錯誤
那麼
這與 S13 不同,所以我們認為有兩個錯誤。更進一步的代數方法可以幫助校正著兩個錯誤。
開頭兩段內容出自 Federal Standard 1037C
上面的文字摘自:https://web.archive.org/web/20070213013106/http://bch-code.foosquare.com/
流行的解碼算法有,
Peterson 算法是普通 BCH 解碼過程的第二步,在這裡使用 Peterson 算法計算多項式 的錯誤定位多項式係數
這樣給定 BCH 碼 ,可以校正 個錯誤的 Peterson Gorenstein Zierler 算法就是
的矩陣
的矩陣
表示
if then declare an empty error locator polynomial stop Peterson procedure. end set continue from the beginning of Peterson's decoding
在得到 多項式之後,用 Chiens search 算法就可以得到它的解 。根據素元 的指數冪就能得到接收到的碼字中錯誤的位置,這也就是誤差定位多項式名稱的由來。
對於二進制的BCH碼,可以直接根據錯誤定位多項式因數素元指數的位置校正接收到的向量。最後,對這些位置接收到的數值取反,就可以得到正確的BCH解碼碼字。
另外也可以使用Berlekamp-Massey 算法確定錯誤定位多項式,從而解決BCH解碼的問題。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.