アプリ版:「スタンプのみでお礼する」機能のリリースについて

授業で分からないところがあるので教えてください。

ブロック符号Wを情報ビット行列Uと生成行列Gの積で表す。
W=U*G

例えば、
U=(1100)

   1000111
G= 0100011
   0010101
   0001110

のとき、W=U*G=[1100100]

となるそうなのですが、なぜそうなるのか分かりません。
どういうふうにUとGを掛けてるのか教えてください。

A 回答 (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]
これがブロック符号の計算で使われる演算則です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/07/24 23:16

あなたが授業で習ったことを書いてください。


そして、行列の計算プロセスと結果を書いて下さい。
普通の行列の掛け算をして、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に置き換えるということですか?
よければもう少しアドバイスください。

補足日時:2008/07/24 21:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!