Main Content

decode

構文

msg = decode(code,n,k,'hamming/fmt',prim_poly)
msg = decode(code,n,k,'linear/fmt',genmat,trt)
msg = decode(code,n,k,'cyclic/fmt',genpoly,trt)
msg = decode(code,n,k)
[msg,err] = decode(...)
[msg,err,ccode] = decode(...)
[msg,err,ccode,cerr] = decode(...)

オプション入力

入力既定値
fmt binary
prim_poly gfprimdf(m) ここで、次の式が成り立ちます。n = 2^m-1
genpoly cyclpoly(n,k)
trt syndtable を使用してメソッドのパリティ チェック行列に関連するシンドローム復号化テーブルを作成

説明

すべての構文に対して

関数 decode は、誤り訂正符号化手法を使って、符号化されたメッセージを復元します。手法と定義パラメーターは、オリジナルの信号を符号化するために使用されたものと一致しなければなりません。

encode のリファレンス ページで、nk の意味、fmt に使用できる値、および codemsg に使用できる形式について説明しています。このリファレンスの残り部分を読む前に、それらの説明での使用法について知っておいてください。関数 encode によって作成されて"いない" 入力引数 code とともに関数 decode を使用すると、エラーが発生する場合があります。

特定の構文に対して

msg = decode(code,n,k,'hamming/fmt',prim_poly) は、ハミング法を使用して code を復号化します。この構文に対して、n は、3 以上の整数 m に対して 2m-1 の形式でなければならず、kn-m と等しくなければなりません。prim_poly は、多項式の文字ベクトルまたは符号化プロセスで使用される GF(2m) に対する原始多項式のバイナリ係数を昇べきの順に与える行ベクトルです。prim_poly の既定値は gfprimdf(m) です。関数が各符号語の誤りを訂正するために使用する復号化テーブルは syndtable(hammgen(m)) です。

msg = decode(code,n,k,'linear/fmt',genmat,trt) は、kn 列の生成行列 genmat によって決定される線形ブロック符号である code を復号化します。genmat は必須入力です。decode は、復号化テーブル trt を使用してエラーの修正を試みます。ここで、trt2^(n-k)n 列の行列です。

msg = decode(code,n,k,'cyclic/fmt',genpoly,trt) は巡回符号 code を復号化し、復号化テーブル trt を使用して誤りの修正を試みます。ここで、trt2^(n-k)n 列の行列です。genpoly は、多項式の文字ベクトルまたはこの符号のバイナリ生成多項式の係数を昇べきの順に与える行ベクトルです。genpoly の既定値は cyclpoly(n,k) です。定義では、[n,k] 巡回符号に対する生成多項式は、次数 n-k をもち、xn-1-1 で割り切れなければなりません。

msg = decode(code,n,k) は、msg = decode(code,n,k,'hamming/binary') と同じ結果になります。

[msg,err] = decode(...) は、誤差訂正に関する情報を与える列ベクトル err を出力します。コードが畳み込み符号の場合は、err は復号化判定プロセスで使われるメトリクス計算を含みます。その他のコード タイプの場合、err の r 行目の非負の整数は、r 番目の message 語で訂正された誤り数を示します。負の整数は、r 番目の語には、訂正可能な数よりも多くの誤りがあることを示します。

[msg,err,ccode] = decode(...)ccode で訂正したコードを返します。

[msg,err,ccode,cerr] = decode(...) は、code の形式によって意味が異なる列ベクトル cerr を返します。

  • code がバイナリ ベクトルの場合は、vec2matcerr の r 行目の非負の整数は、r 番目の "符号語" で訂正された誤り数を示します。負の整数は、r 番目の符号語には、訂正可能な数よりも多くの誤りがあることを示します。

  • code がバイナリ ベクトルでない場合は、cerr = err です。

すべて折りたたむ

符号語長とメッセージ長の値を設定します。

n = 15; % Codeword length
k = 11; % Message length

メッセージ長と等しい長さのランダムなバイナリ メッセージを作成します。

data = randi([0 1],k,1);

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

encData = encode(data,n,k,'hamming/binary');

符号化されたメッセージ シーケンスの 4 番目のビットに誤りを加えて破損させます。

encData(4) = ~encData(4);

破損したシーケンスを復号化します。復号化器がメッセージを正しく復元したことを確認します。

decData = decode(encData,n,k,'hamming/binary');
numerr = biterr(data,decData)
numerr = 0

アルゴリズム

復号化法により、decodehammgensyndtablecyclgen などの低レベルの関数に依存します。

バージョン履歴

R2006a より前に導入