Я работаю с минимальным полиномом бинарной матрицы (1 или 0). Я знаю какой-то алгоритм для нахождения минимального многочлена матрицы, такой как Берлекэмп Мэсси. Не могли бы вы предложить мне какой-нибудь код Matlab для реализации Berlekamp Massey в Galios Field 2. Я пытался использовать linbox lib, но это заняло много времени и не применялось для двоичной матрицы. это моя матрица
A=[1 0 0 0;
0 1 0 1;
1 1 1 1;
1 1 1 0];
И это мой код Matlab (но я думаю, что он не подходит для моей задачи в GF(2))
function f=minPoly_Berlemap(A,b)
A=[1 0 0 0;
0 1 0 1;
1 1 1 1;
1 1 1 0];
b=[1;1;0;0];
[m n]=size(A);
A_u=[];
I=eye(n);
%% Step1
for i=1:(2*n)
A_u(:,i)= mod(A^(i-1)*b,2);
end
%% Step2
k=0;
g=[1];
gk=[1];
d=0;
%% Step3
while (d<n&k<n)
%% Step4
u_k=I(:,k+1);
s=mod(u_k'*A_u,2);
%% Step 5
d = length(g)-1;
mul_gs =mod( conv(g(end:-1:1),s),2); %multiply two polynomial
s_g = mul_gs(d+1:end-d);
%% Step 6
f=Berlekamp_Massey2(s_g);
%% Step 7
gk=mod(conv(f,g),2);
if d<n
k=k+1;
g=gk;
else
break;
end
end
f=g
end