- ベストアンサー
ハミング符号 ブロック符号を求める
授業で分からないところがあるので教えてください。 ブロック符号Wを情報ビット行列Uと生成行列Gの積で表す。 W=U*G 例えば、 U=(1100) 1000111 G= 0100011 0010101 0001110 のとき、W=U*G=[1100100] となるそうなのですが、なぜそうなるのか分かりません。 どういうふうにUとGを掛けてるのか教えてください。
- みんなの回答 (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] これがブロック符号の計算で使われる演算則です。
その他の回答 (1)
- info22
- ベストアンサー率55% (2225/4034)
あなたが授業で習ったことを書いてください。 そして、行列の計算プロセスと結果を書いて下さい。 普通の行列の掛け算をして、2以上の要素はmod 2の計算の余りに置き換えて下さい。(論理回路的な演算では要素の掛け算はXORでします)
補足
高校で行列を習わなかったので、ネットで調べてやってみたんですが もし 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に置き換えるということですか? よければもう少しアドバイスください。
お礼
そういう決まりがあったんですね。すごくよく分かりました。 ありがとうございます!