Main Content

decode

説明

msg = decode(code,n,k) は、符号化されたメッセージ code を復号化します。この関数は、コードワード長 n、メッセージ長 k でハミング符号化法が使用されたと仮定します。

msg = decode(code,n,k,codingMethod,prim_poly) は、符号化に使用された原始多項式が prim_poly であると仮定して code を復号化します。この構文は、codingMethod'hamming/binary' または 'hamming/decimal' である場合に適用されます。

msg = decode(code,n,k,codingMethod,genmat) は、符号化に使用された生成行列が genmat であると仮定して code を復号化します。この構文は、codingMethod'linear/binary' または 'linear/decimal' である場合に適用されます。

msg = decode(code,n,k,codingMethod,genmat,trt) は、さらに、復号化テーブル trt を指定します。この構文は、codingMethod'linear/binary' または 'linear/decimal' である場合に適用されます。

msg = decode(code,n,k,codingMethod,genpoly) は、符号化に使用された生成多項式が genpoly であると仮定して code を復号化します。この構文は、codingMethod'cyclic/binary' または 'cyclic/decimal' である場合に適用されます。

msg = decode(code,n,k,codingMethod,genpoly,trt) は、さらに、復号化テーブル trt を指定します。この構文は、codingMethod'cyclic/binary' または 'cyclic/decimal' である場合に適用されます。

[msg,err,ccode,cerr] = decode(___) は、さらに、前の構文の入力引数の任意の組み合わせを使用して、メッセージ語の誤り err、訂正されたコードワード ccode、およびコードワードの誤り cerr を返します。

すべて折りたたむ

コードワード長とメッセージ長の値を設定します。

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

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

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

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

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

ランダムな場所に誤りを加えて、符号化されたメッセージを破損させます。

errLoc = randerr(1,n);
encData = mod(encData + errLoc',2);

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

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

コードワード長とメッセージ長の値を設定します。

n = 7; % Codeword length
k = 3; % Message length

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

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

巡回生成多項式を作成します。次に、パリティ チェック行列を作成し、生成行列に変換します。

pol = cyclpoly(n,k);
parmat = cyclgen(n,pol);
genmat = gen2par(parmat);

生成行列を使用してメッセージ シーケンスを符号化します。

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

ランダムな場所に誤りを加えて、符号化されたメッセージを破損させます。

errLoc = randerr(1,n);
encData = mod(encData + errLoc',2);

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

decData = decode(encData,n,k,'linear/binary',genmat);
Single-error patterns loaded in decoding table.  8 rows remaining.
2-error patterns loaded.  1 rows remaining.
3-error patterns loaded.  0 rows remaining.
numerr = biterr(data,decData)
numerr = 0

コードワード長とメッセージ長の値を設定します。

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

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

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

巡回符号に対する生成多項式を作成します。生成多項式を使用してパリティ チェック行列を作成します。

genpoly = cyclpoly(n,k);
parmat = cyclgen(n,genpoly);

パリティ チェック行列を使用してシンドローム復号化テーブルを作成します。

trt = syndtable(parmat);
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.

生成多項式を使用してデータを符号化します。

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

ランダムな場所に 3 つの誤りを加えて、符号化されたメッセージを破損させます。

errLoc = randerr(1,n,3);
encData = mod(encData + errLoc',2);

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

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

入力引数

すべて折りたたむ

入力符号。次のいずれかのオプションとして指定します。

  • バイナリの列ベクトルまたは行ベクトル

  • n 列のバイナリ行列

  • 範囲 [0, 2n–1] の整数の列ベクトルまたは行ベクトル

データ型: single | double

コードワード長。正の整数として指定します。この値は、関数で 2m–1 として計算されます。m は 2 以上の整数です。

メッセージ長。正の整数として指定します。この値は、関数で n–m として計算されます。m は 2 以上でなければなりません。

誤り符号化法と形式。次のいずれかのオプションとして指定します。

  • 'hamming/binary'

  • 'hamming/decimal'

  • 'linear/binary'

  • 'linear/decimal'

  • 'cyclic/binary'

  • 'cyclic/decimal'

この入力で選択した値によって、使用すべき構文が決まります。この表は、その依存関係をまとめたものです。最初の構文を使用する場合は codingMethod の値を指定しないため、その構文はこの表に示されていません。

codingMethod の値使用する構文
'hamming/binary' または 'hamming/decimal'2 または 7
'linear/binary' または 'linear/decimal'3、4、または 7
'cyclic/binary' または 'cyclic/decimal'5、6、または 7

データ型: char | string

原始多項式。次のオプションのいずれかとして指定します。

  • バイナリ行ベクトル — このベクトルは、prim_poly の係数を昇べきの順に与えます。

  • 文字ベクトルまたは string スカラー — この値は、prim_poly をテキスト表現で定義します。詳細については、Communications Toolbox での多項式の表現を参照してください。

  • 正の整数 — この値は、prim_poly を範囲 [2m + 1, 2m + 1 – 1] で定義します。

詳細については、既定の原始多項式および原始多項式と元の表現を参照してください。

依存関係

この引数は、CodingMethod'hamming/binary' または 'hamming/decimal' に設定した場合に適用されます。

データ型: double | char | string

生成行列。kn 列の数値行列として指定します。

依存関係

この引数は、CodingMethod'linear/binary' または 'linear/decimal' に設定した場合に適用されます。

データ型: double

生成多項式。多項式の文字ベクトルまたはバイナリ生成多項式の係数を昇べきの順に与える行ベクトルとして指定します。[n, k] 巡回符号に対する genpoly の値は、次数が nk で、xn–1 で割り切れなければなりません。x は識別子です。

依存関係

この引数は、CodingMethod'cyclic/binary' または 'cyclic/decimal' に設定した場合に適用されます。

データ型: double | char | string

復号化テーブル。2n-kn 列のバイナリ行列として指定します。関数 syndtable を使用して復号化テーブルを作成します。

依存関係

この引数は、CodingMethod'linear/binary''linear/decimal''cyclic/binary'、または 'cyclic/decimal' に設定した場合に適用されます。

出力引数

すべて折りたたむ

復号化されたメッセージ。次の表のオプションのいずれかとして返されます。msg の値と次元は、code の値と次元および入力メッセージの形式によって決まります。

code の値入力メッセージの形式msg の値

バイナリの列ベクトルまたは行ベクトル

2 進数

バイナリの列ベクトルまたは行ベクトル

n 列のバイナリ行列

2 進数

k 列のバイナリ行列

範囲 [0, 2n–1] の整数の列ベクトルまたは行ベクトル

10 進数

範囲 [0, 2k–1] の整数の列ベクトルまたは行ベクトル

データ型: single | double

メッセージの誤り訂正情報。整数の列ベクトルとして返されます。ベクトルの長さはメッセージ語の数に等しくなります。このベクトルのエントリは、次の値を取ります。

  • 0 — 対応するメッセージ語に誤りは検出されなかった。

  • 1 — 対応するメッセージ語に誤りが検出されて訂正された。

  • –1 — 復号化アルゴリズムが対応するメッセージ語で訂正能力を超える数の誤りを検出した。

訂正された符号。以下のオプションのいずれかとして返されます。

  • n 列のバイナリの列ベクトルまたは行ベクトル

  • n 列のバイナリ行列

  • 範囲が [0, 2n–1] である n 個の整数エントリから成る列ベクトルまたは行ベクトル

ccode の形式は、code の形式と一致します。

コードワードの誤り訂正情報。整数の列ベクトルとして返されます。ベクトルの長さはメッセージ語の数に等しくなります。この出力の意味は、code の形式によって異なります。code がバイナリ ベクトルでない場合、cerrerr と等しくなります。code がバイナリ ベクトルの場合、この出力にはコードワードの誤り検出情報が含まれます。この情報は、err と同じ方法で与えられます。

アルゴリズム

decode は、復号化手法によって異なり、hammgensyndtablecyclgen などの低水準関数に依存します。

バージョン履歴

R2006a より前に導入