下記の生成行列
について下記の問いに答えよ。
(1)検査行列
(2)[1 1 1 0 0 1]を受信したときの誤り訂正をシンドロームを用いて行え。
検査行列とは
入力符号に対する出力符号の一致性を確認するための行列です。(パリティ検査行列とも言われます。)
よく
入力符号ベクトルを
入力符号と同じ信号を与えた時に出力0を返す行列です。
もし、出力符号
検査行列の求め方
以前の記事では、検査行列から生成行列
と言うことは、当然逆もできるはずです。
本節では、生成行列から検査行列を求める方法について説明します。
手順1:生成行列 を成分分解する
そうです。検査行列が最初から与えられた場合と同じく、生成行列の場合でも単位行列と情報・検査ビット関連行列に分解するところから始めれば良いです。
以前の記事で説明した手順2から逆の手順で検査行列を辿っていけば良いわけですね。
下記の式のように、行列
手順2:情報・検査ビット関連行列を転置する
シンドロームとは

出力符号
出力符号ベクトル
のとき、出力符号にエラービットは無く、入力符号と等しい。 のとき、出力符号にエラービットがある。
出力した と同じ成分を持つ列が誤っているビットである。
生成符号を利用した誤り符号の抽出方法では、予め考えられる出力パターンを網羅しておき、それに当てはまらない出力が出た時にエラーとしていました。
しかし、シンドロームを使えば、結果を総当たりで検索せずとも、ピンポイントで調査することで誤りに気付くことができます。
証明
なぜ、
入力符号
で表すことができる。これを(5)式に代入すると
になる。もしエラーが発生していなければ、エラーベクトルは0。エラーが発生しているときは非0になります。
この結果が、左辺
解答例
(1)検査行列
行の数が3つなので、3列目までは単位行列である。
よって、4列目~6列目の成分を情報・検査ビット関連行列として取り出せばよく
よって、求める検査行列は
(2)シンドロームを用いた符号訂正
(5)式を用いてシンドロームを計算する
(0 0 1)と一致する
よって、受信符号の6番目の値が誤っている。
正しい受信符号は、[1 1 1 0 0 0]