• ベストアンサー

ハミング符号 ブロック符号を求める

授業で分からないところがあるので教えてください。 ブロック符号Wを情報ビット行列Uと生成行列Gの積で表す。 W=U*G 例えば、 U=(1100)    1000111 G= 0100011    0010101    0001110 のとき、W=U*G=[1100100] となるそうなのですが、なぜそうなるのか分かりません。 どういうふうにUとGを掛けてるのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • info22
  • ベストアンサー率55% (2225/4034)
回答No.2

> W=[a*e+b*f+c*g+d*h a*i+b*j+c*k+d*l c*m+…] この各要素の計算は mod 2(2で割った余り)の計算をします。 「+」をEOR(排他的論理和)で計算することと同じです。 > この2でmodというの使って、余りが0なら0に置き換えるということですか? その通りです。 2 mod 2 = 0です。 3 mod 2 = 1 1 mod 2 = 1 0 mod 2 = 0 4 mod 2 = 0 と言う計算になります。 EOR(+をEORの演算子とする)では 1+1=0 (2 mod 2=0に対応 0+0=0 (0 mod 2=0に対応) 0+1=1+0=1(1 mod 2=1に対応) 1+1+1=0+1=1(3 mod 2=1に対応 1+1+1+1=0+0=0(4 mod 2=0に対応) mod 2の演算では > W=[1100122] =[1 1 0 0 1 0 0] これがブロック符号の計算で使われる演算則です。

mochiato
質問者

お礼

そういう決まりがあったんですね。すごくよく分かりました。 ありがとうございます!

その他の回答 (1)

  • info22
  • ベストアンサー率55% (2225/4034)
回答No.1

あなたが授業で習ったことを書いてください。 そして、行列の計算プロセスと結果を書いて下さい。 普通の行列の掛け算をして、2以上の要素はmod 2の計算の余りに置き換えて下さい。(論理回路的な演算では要素の掛け算はXORでします)

mochiato
質問者

補足

高校で行列を習わなかったので、ネットで調べてやってみたんですが もし U=(a b c d)    e i m… G= f j n…    g k o…    h l p… とあったら W=[a*e+b*f+c*g+d*h a*i+b*j+c*k+d*l c*m+…] みたいな感じでしょうか? 公式なども調べたんですがぴったりはまるものがなかったので合ってるかわからないんですが… でもこれだと W=[1100122] になってしまいます。あ、この2でmodというの使って、余りが0なら0に置き換えるということですか? よければもう少しアドバイスください。

関連するQ&A