设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的元素)
答案 0 :(得分:0)
A\B
和pinv(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?
中描述