メインコンテンツ

syndtable

シンドローム復号化テーブルの作成

説明

t = syndtable(h) は、コードワード長 n とメッセージ長 k の誤り訂正バイナリ符号の復号化テーブルを返します。h は符号の (nk) 行 n 列のパリティチェック行列です。

関数は、バイナリ値と 10 進数値を変換するときに、左端の列を最上位の桁として解釈します。

すべて折りたたむ

復号化テーブルは、伝送中に破損した符号の誤りを訂正する方法を復号化器に示します。ハミング符号は、任意のコードワード内の単一シンボル エラーを訂正することができます。その他の符号は、コードワード内の複数のシンボルを破損させる誤りを訂正、または部分的に訂正します。

Communications Toolbox は、復号化テーブルを n 個の列と 2n-k 個の行をもつ行列として表します。各行は、受信したコードワード ベクトルに対して訂正ベクトルを指定します。ハミング復号化テーブルには n+1 行あります。syndtable 関数は、指定されたパリティチェック行列の復号化テーブルを生成します。

この例では、受信メッセージ内の誤り訂正のためハミング復号化テーブルを使用します。関数hammgenはパリティ チェック行列を生成し、関数 syndtable は復号化テーブルを生成します。シンドロームを決定するために、パリティチェック行列の転置を、受信したコードワードで乗算します。 復号化テーブルは、訂正ベクトルの決定に役立ちます。訂正されたコードワードは、訂正ベクトルと受信したコードワードの和 (剰余 2) です。

[7,4] ハミング コードのパラメーターを設定します。

m = 3; 
n = 2^m-1; 
k = n-m;

パリティ チェック行列と復号化テーブルを生成します。

parmat = hammgen(m);    
trt = syndtable(parmat);

受信データのベクトルを指定します。

recd = [1 0 0 1 1 1 1]
recd = 1×7

     1     0     0     1     1     1     1

シンドロームを計算し、シンドロームの 10 進数値とバイナリ値を表示します。

syndrome = rem(recd * parmat',2);
syndrome_int = bit2int(syndrome',m); % Convert to decimal.
disp(['Syndrome = ',num2str(syndrome_int), ...
      ' (decimal), ',num2str(syndrome),' (binary)'])
Syndrome = 3 (decimal), 0  1  1 (binary)

復号化テーブルとシンドロームを使用して訂正ベクトルを決定し、訂正ベクトルを使用して訂正されるコードワードを計算します。

corrvect = trt(1+syndrome_int,:)
corrvect = 1×7

     0     0     0     0     1     0     0

correctedcode = rem(corrvect+recd,2)
correctedcode = 1×7

     1     0     0     1     0     1     1

入力引数

すべて折りたたむ

パリティチェック行列。(nk) 行 n 列の行列として指定します。ここで、n はコードワード長、k はメッセージ長です。

データ型: single | double

出力引数

すべて折りたたむ

誤り訂正バイナリ符号の復号化テーブル。2n-kn 列のバイナリ行列として指定します。tr 番目の行は、シンドロームが 10 進整数値 r—1 をもち、符号の標準配列からの剰余の始端部を表す、受信したバイナリ コードワードの誤りパターンです。

データ型: single | double

参照

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

バージョン履歴

R2006a より前に導入