バイナリ行列 A
( と のみ)1
と、ガロア体 (256)0
のベクトルがあります。D
ベクトルC
は次のように計算されます。
C = (A^^-1)*D
ここで、A^^-1
は の行列の逆行列を表しA
、GF(2)
は*
乗算演算です。結果ベクトルC
は にある必要がありますGF(256)
。Matlabでやってみました。
A= [ 1 0 0 1 1 0 0 0 0 0 0 0 0 0;
1 1 0 0 0 1 0 0 0 0 0 0 0 0;
1 1 1 0 0 0 1 0 0 0 0 0 0 0;
0 1 1 1 0 0 0 1 0 0 0 0 0 0;
0 0 1 1 0 0 0 0 1 0 0 0 0 0;
1 1 0 1 1 0 0 1 0 1 0 0 0 0;
1 0 1 1 0 1 0 0 1 0 1 0 0 0;
1 1 1 0 0 0 1 1 1 0 0 1 0 0;
0 1 1 1 1 1 1 0 0 0 0 0 1 0;
0 0 0 0 1 1 1 1 1 0 0 0 0 1;
0 1 1 1 1 0 1 1 1 0 1 1 1 0;
0 0 0 1 0 0 0 1 0 0 0 0 0 0;
0 0 1 0 0 0 0 1 0 0 0 0 0 0;
1 1 1 1 0 0 0 0 0 0 0 0 0 0]
D=[0;0;0;0;0;0;0;0;0;0;103;198;105;115]
A=gf(A,1);
D=gf(D,8); %%2^8=256
C=inv(A)*D
%% The corrected result must be
%%C=[103;187;125;210;181;220;161;20;175;175;187;187;220;115]
ただし、上記のコードでは、期待した結果を達成できません
C=[103;187;125;210;181;220;161;20;175;175;187;187;220;115]
次のようなエラーが発生します
Error using * (line 14)
Orders must match.
期待した結果を達成するのを手伝ってもらえますか?