Main Content

bchenc

説明

code = bchenc(msg,N,K) は、狭義の生成多項式を使用する (N,K) BCH 符号化器を使用して入力メッセージを符号化します。Bose–Chaudhuri–Hocquenghem (BCH) 符号化については、[1]を参照してください。

code = bchenc(msg,N,K,paritypos) は、符号化された入力メッセージの末尾または先頭にパリティ シンボルを追加して出力を作成します。

すべて折りたたむ

GF(2) のガロア配列の BCH パラメーターを設定します。

M = 4;
n = 2^M-1;   % Codeword length
k = 5;       % Message length
nwords = 10; % Number of words to encode

メッセージを作成します。

msgTx = gf(randi([0 1],nwords,k));

誤り訂正能力を求めます。

t = bchnumerr(n,k)
t = 3

メッセージを符号化します。

enc = bchenc(msgTx,n,k);

最大 t ビットまで各コードワードを破損させます。

noisycode = enc + randerr(nwords,n,1:t);

ノイズを含む符号を復号化します。

msgRx = bchdec(noisycode,n,k);

メッセージが適切に復号化されたことを検証します。

isequal(msgTx,msgRx)
ans = logical
   1

可能な誤りの数を増やし、ノイズを含む別のコードワードを生成します。

t2 = t + 1;
noisycode2 = enc + randerr(nwords,n,1:t2);

新規に受信したコードワードを復号化します。

[msgRx2,numerr] = bchdec(noisycode2,n,k);

訂正された誤り数 numerr を調べ、メッセージが適切に復号化されたかどうかを判定します。-1 のエントリは復号化失敗に相当します。これは、指定した [n,k] ペアで訂正できるよりも多くの誤りがコードワードにあった場合に発生します。

numerr
numerr = 10×1

     1
     2
    -1
     2
     3
     1
    -1
     4
     2
     3

送信された 10 個のコードワードのうちの 2 個を適切に受信しませんでした。

入力引数

すべて折りたたむ

符号化するメッセージ。GF(2) 上のシンボルのガロア体配列として指定します。msg の各 K 要素行は、メッセージ ワードを表します。左端のシンボルが最上位シンボルです。

詳細については、ガロア体配列の作成を参照してください。

例: msgTx = gf(randi([0 1],10,5))、ここで msgTx は 10 行 5 列の gf array です。

コードワード長。形式 N = 2M–1 の整数として指定します。ここで M は 3 ~ 16 の整数です。詳細については、ヒントを参照してください。

例: M=4 の場合は 15

メッセージ長。整数として指定します。N および K は、狭義の BCH 符号を生成しなければなりません。

例: 5 は 5 つの要素をもつガロア配列を指定します。

パリティ位置。'end' または 'beginning' として指定します。パリティ シンボルは、出力ガロア配列の各ワードの末尾または先頭にあります。

出力引数

すべて折りたたむ

符号化されたメッセージ。ガロア体配列として返されます。パリティ シンボルは、出力ガロア配列の各ワードの末尾または先頭にあります。パリティ シンボルの位置を指定するには、paritypos 引数を使用します。

ヒント

  • 有効な (N,K) ペアと誤り訂正能力の対応する値の一覧を生成するには、bchnumerr(N) を実行します。

  • 有効な値は N = 2M–1 です。ここで、M は 3 ~ 16 の整数です。N の最大許容値は 65,535 です。

参照

[1] Clark, George C., Jr., and J. Bibb Cain. Error-Correction Coding for Digital Communications, New York: Plenum Press, 1981.

バージョン履歴

R2006a より前に導入