Como executar inverso no GF (2) e multiplicar no GF (256) no Matlab?
Eu tenho uma matriz bináriaA
(só1
e0
) e um vetorD
no campo de Galois (256). O vetorC
é calculado como:
C = (A^^-1)*D
OndeA^^-1
denota a matriz inversa da matrizA
noGF(2)
, *
é operação de multiplicação. O vetor de resultadoC
deve estar emGF(256)
. Eu tentei fazer isso no 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]
No entanto, para o código acima, não consigo como meu resultado esperado
C=[103;187;125;210;181;220;161;20;175;175;187;187;220;115]
Isso produz um erro como
Error using * (line 14)
Orders must match.
Você poderia me ajudar a alcançar o resultado esperado?