ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

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(...)

オプション入力

入力既定値
fmtbinary
prim_polygfprimdf(m) ここで、 n = 2^m-1
genpolycyclpoly(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 で割り切れなければなりません。

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

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

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

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

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

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

encode のリファレンス ページにでは、いくつかのコードの例により関数 decode の利用を説明しています。

下記の例は、符号化手法がたたみ込み符号でなく、コードがバイナリ ベクトルであるときの errcerr の利用を説明します。スクリプトは、巡回コードを使って 2 つの 5 ビット メッセージを符号化します。各符号語は、15 ビットです。誤りは、最初の符号語の最初の 2 ビットと、2 番目の符号語の最初のビットに付加されます。その後、decode を使ってオリジナルのメッセージを復元します。その結果、誤りが訂正されます。err は、最初のメッセージが 2 つの誤りの訂正後に復元されて 2 番目のメッセージが 1 つの誤りの訂正後に復元されることを示します。cerr は、最初の符号語が 2 つの誤りの訂正後に復号化されて 2 番目の符号語が 1 つの誤りの訂正後に復号化されることを示します。

m = 4; n = 2^m-1; % Codeword length is 15.
k = 5; % Message length
msg = ones(10,1); % Two messages, five bits each
code = encode(msg,n,k,'cyclic');  % Encode the message.
% Now place two errors in first word and one error
% in the second word.  Create errors by reversing bits.
noisycode = code;
noisycode(1:2) = bitxor(noisycode(1:2),[1 1]');
noisycode(16) = bitxor(noisycode(16),1);
% Decode and try to correct the errors.
[newmsg,err,ccode,cerr] = decode(noisycode,n,k,'cyclic');
disp('Transpose of err is'); disp(err')
disp('Transpose of cerr is'); disp(cerr')

出力は以下のようになります。

Single-error patterns loaded in decoding table.
 1008 rows remaining.
2-error patterns loaded.  918 rows remaining.
3-error patterns loaded.  648 rows remaining.
4-error patterns loaded.  243 rows remaining.
5-error patterns loaded.  0 rows remaining.
Transpose of err is
     2     1

Transpose of cerr is
     2     1

詳細

すべて展開する

アルゴリズム

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

この情報は役に立ちましたか?