下図はディジタル技術検定 2 級制御部門第 51 回の (4) である。

この手の符号問題は出る確率が高そうなようなので一度は演習するなどの準備をしておきたい。検定試験のはさほど難しくないので、専門書レベルの知識は必要ない。むしろこのくらいの問題を考えておくと専門書を読んだときに取っつきやすい。
まず符号化というのは何かというと、データを送信する際に通過する媒体の状況に合わせて、元データに何らかの冗長なデータを付け加えることをいう。またアナログ信号をデジタルデータに変換することも符号化という。
符号化する際の演算は、とりあえず積(AND)と和(XOR)を覚えておけば良い。書庫「誤り技術に挑戦!」でも少し触れているが、検定に関していうとそれだけは抑えておく。
積:0 x 0 = 0, 0 x 1 = 0, 1 x 1 = 1
和:0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 0
和に関しては二進符号なので 1 + 1 は 0 になる。要は普通に足し算した結果が奇数ならば 1、偶数ならば 0 ということである。普通に二進数といってしまうと桁上がりが発生してしまう。
符号化の時の生成行列というのは元データを加工するための行列のことである。元データ(ベクトルという云い方をする)を C(大きさ:1 x m) とし、生成行列を G(大きさ:m x n)とすると、C x G を計算することで符号化された大きさ 1 x n のデータを得ることが出来る。高校で習った行列の計算方法を思い出して欲しいが、その計算はいわゆる積和演算になる。
その積和演算を上記のルールで計算するというわけだ。
テキストでは表現が分かりづらいかも知れないが、問題[8]を例に示してみると、
C = (1 0 0)
G = (1 0 0 1 1 0, 0 1 0 0 1 1, 0 0 1 1 0 1)
なので、C x G は、
(1 0 0) x (1 0 0 1 1 0
0 1 0 0 1 1
0 0 1 1 0 1)
= (1 x 1 + 0 x 0 + 0 x 0
1 x 0 + 0 x 1 + 0 x 0
1 x 0 + 0 x 0 + 0 x 1
1 x 1 + 0 x 0 + 0 x 1
1 x 1 + 0 x 1 + 0 x 0
1 x 0 + 0 x 1 + 0 x 1)
= 1
0
0
1
1
0
縦ベクトルであるが、符号としては横書きにして
(1)100110
となる。
[9]に関してちょっと解く方法を変えてみる
入力ベクトルを縦ベクトルに変えて、生成行列を行ごとに分解して、入力のそれぞれの行の値と生成行列の行の積を演算し、その結果を列方向に和演算する。
1 x (1 0 0 1 1 0) = (1 0 0 1 1 0)
0 x (0 1 0 0 1 1) = (0 0 0 0 0 0)
1 x (0 0 1 1 0 1) = (0 0 1 1 0 1) + ↓ それぞれの要素ごとに縦方向に和演算
---------------
(1 0 1 0 1 1)
ということで正解(5)を得る。何かだまされたように見えるが、前述の正統な方法で解いたのと計算式は全く同じなので確認し見て下さい。
ちょっと扱うベクトルと行列の大きさが増えた問題がディジタル技術検定 1 級制御部門第 49 回に出ていたので、この方法で解いてみよう。問題の一部を以下に示す。

入力が C3 = (0 1 1 1) について解いてみる。
C G
0 x (1 0 0 0 1 0 1) = (0 0 0 0 0 0 0) ← オール "0" なので無視して良い。
1 x (0 1 0 0 0 1 1) = (0 1 0 0 0 1 1)
1 x (0 0 1 0 1 1 1) = (0 0 1 0 1 1 1)
1 x (0 0 0 1 1 1 0) = (0 0 0 1 1 1 0) +
----------------
W = (0 1 1 1 0 1 0)
とこんな要領だ。要は入力が "1" に対応する生成行列の行だけを取り出して、和演算すれば良いと云うことである。"0" を掛けたら結果はそのベクトルは全部 "0" になり、要素がすべて "0" のベクトルは足しても何も変わらないので、考える必要がない。この方法なら目算で出来ると思うがどうだろうか。また右から 2 つ目は 1 を 3 つ足しているが、先にも書いたように奇数個の和は "1" なのでこうなる。
← にほんブログ村「科学」-「技術・工学」へ
↑ クリックをお願いします。

この手の符号問題は出る確率が高そうなようなので一度は演習するなどの準備をしておきたい。検定試験のはさほど難しくないので、専門書レベルの知識は必要ない。むしろこのくらいの問題を考えておくと専門書を読んだときに取っつきやすい。
まず符号化というのは何かというと、データを送信する際に通過する媒体の状況に合わせて、元データに何らかの冗長なデータを付け加えることをいう。またアナログ信号をデジタルデータに変換することも符号化という。
符号化する際の演算は、とりあえず積(AND)と和(XOR)を覚えておけば良い。書庫「誤り技術に挑戦!」でも少し触れているが、検定に関していうとそれだけは抑えておく。
積:0 x 0 = 0, 0 x 1 = 0, 1 x 1 = 1
和:0 + 0 = 0, 0 + 1 = 1, 1 + 1 = 0
和に関しては二進符号なので 1 + 1 は 0 になる。要は普通に足し算した結果が奇数ならば 1、偶数ならば 0 ということである。普通に二進数といってしまうと桁上がりが発生してしまう。
符号化の時の生成行列というのは元データを加工するための行列のことである。元データ(ベクトルという云い方をする)を C(大きさ:1 x m) とし、生成行列を G(大きさ:m x n)とすると、C x G を計算することで符号化された大きさ 1 x n のデータを得ることが出来る。高校で習った行列の計算方法を思い出して欲しいが、その計算はいわゆる積和演算になる。
その積和演算を上記のルールで計算するというわけだ。
テキストでは表現が分かりづらいかも知れないが、問題[8]を例に示してみると、
C = (1 0 0)
G = (1 0 0 1 1 0, 0 1 0 0 1 1, 0 0 1 1 0 1)
なので、C x G は、
(1 0 0) x (1 0 0 1 1 0
0 1 0 0 1 1
0 0 1 1 0 1)
= (1 x 1 + 0 x 0 + 0 x 0
1 x 0 + 0 x 1 + 0 x 0
1 x 0 + 0 x 0 + 0 x 1
1 x 1 + 0 x 0 + 0 x 1
1 x 1 + 0 x 1 + 0 x 0
1 x 0 + 0 x 1 + 0 x 1)
= 1
0
0
1
1
0
縦ベクトルであるが、符号としては横書きにして
(1)100110
となる。
[9]に関してちょっと解く方法を変えてみる
入力ベクトルを縦ベクトルに変えて、生成行列を行ごとに分解して、入力のそれぞれの行の値と生成行列の行の積を演算し、その結果を列方向に和演算する。
1 x (1 0 0 1 1 0) = (1 0 0 1 1 0)
0 x (0 1 0 0 1 1) = (0 0 0 0 0 0)
1 x (0 0 1 1 0 1) = (0 0 1 1 0 1) + ↓ それぞれの要素ごとに縦方向に和演算
---------------
(1 0 1 0 1 1)
ということで正解(5)を得る。何かだまされたように見えるが、前述の正統な方法で解いたのと計算式は全く同じなので確認し見て下さい。
ちょっと扱うベクトルと行列の大きさが増えた問題がディジタル技術検定 1 級制御部門第 49 回に出ていたので、この方法で解いてみよう。問題の一部を以下に示す。

入力が C3 = (0 1 1 1) について解いてみる。
C G
0 x (1 0 0 0 1 0 1) = (0 0 0 0 0 0 0) ← オール "0" なので無視して良い。
1 x (0 1 0 0 0 1 1) = (0 1 0 0 0 1 1)
1 x (0 0 1 0 1 1 1) = (0 0 1 0 1 1 1)
1 x (0 0 0 1 1 1 0) = (0 0 0 1 1 1 0) +
----------------
W = (0 1 1 1 0 1 0)
とこんな要領だ。要は入力が "1" に対応する生成行列の行だけを取り出して、和演算すれば良いと云うことである。"0" を掛けたら結果はそのベクトルは全部 "0" になり、要素がすべて "0" のベクトルは足しても何も変わらないので、考える必要がない。この方法なら目算で出来ると思うがどうだろうか。また右から 2 つ目は 1 を 3 つ足しているが、先にも書いたように奇数個の和は "1" なのでこうなる。

↑ クリックをお願いします。