Wie führe ich in GF (2) eine Umkehrung durch und multipliziere in GF (256) in Matlab?
Ich habe eine binäre MatrixA
(nur1
und0
) und ein VektorD
im Galois-Feld (256). Der VektorC
wird berechnet als:
C = (A^^-1)*D
woA^^-1
bezeichnet die inverse Matrix der MatrixA
imGF(2)
, *
ist eine Multiplikationsoperation. Der ErgebnisvektorC
muss in @ seGF(256)
. Ich habe versucht, es in Matlab zu tun.
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]
Für den obigen Code kann ich jedoch nicht das erwartete Ergebnis erzielen
C=[103;187;125;210;181;220;161;20;175;175;187;187;220;115]
It erzeugt einen Fehler als
Error using * (line 14)
Orders must match.
Könnten Sie mir helfen, mein erwartetes Ergebnis zu erzielen?