Как выполнить обратное в GF (2) и умножить в GF (256) в Matlab?
У меня есть двоичная матрицаA
(только1
а также0
) и векторD
в поле Галуа (256). Вектор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.
Не могли бы вы помочь мне достичь ожидаемого результата?