¿Cómo realizar inversa en GF (2) y multiplicar en GF (256) en Matlab?
Tengo una matriz binariaA
(solamente1
y0
) y un vectorD
en el campo de Galois (256). El vectorC
se calcula como:
C = (A^^-1)*D
dóndeA^^-1
denota la matriz inversa de matrizA
enGF(2)
, *
Es multiplicar la operación. El vector resultanteC
debe estar enGF(256)
. Traté de hacerlo en 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]
Sin embargo, para el código anterior, no puedo lograrlo como mi resultado esperado
C=[103;187;125;210;181;220;161;20;175;175;187;187;220;115]
Produce un error como
Error using * (line 14)
Orders must match.
¿Podrías ayudarme a lograr el resultado esperado?