在有限域F2上求解系统AX = B for X.

时间:2016-02-14 16:50:22

标签: matlab binary linear-algebra xor

  

设A,B和X为二进制矩阵(在F2中){0,1}正值,其中A和B的大小为n×m,其中n> m(方程式多于变量)。 X是m×m矩阵。    计算X使得AX = B.

这里,A不是二次矩阵。

我有A和B,我正在寻找X.我应该使用什么算法来找到X?

我试过了

X=pinv(A)*B; 
X=mod(X,2); 

但结果是实数值,而不是二进制(有限域F2的元素)

1 个答案:

答案 0 :(得分:0)

A\Bpinv(A)*B都没有帮助你,因为这些命令将矩阵条目视为实数,而不是有限域GF(2)的元素。

命令gflineq使用x = gflineq(A,b,p)解决字段GP(p)上的线性系统;此命令是Communications System Toolbox的一部分。如果你有工具箱,那么你需要做的就是通过堆叠B的列将矩阵方程AX = B放入Mx = B的形式,然后将解决方案重新整形为矩阵形式。像这样:

[n, m] = size(A);
b = B(:);                 % stacked B
M = kron(eye(m), A);      % duplicated A to match
sol = gflineq(M, b, 2);   % solved Mx=b over GF(2)
X = reshape(sol, m, m);   % reshaped into matrix form X 

现在,如果您没有通信系统工具箱,则需要自行实施GF(2)解决方案。该方法是标准的:Gaussian elimination,您可以在线找到许多实现方法。特别是对于二进制矩阵,该算法在How can I find a solution of binary matrix equation AX = B?

中描述