matlab中随机生成的二进制矩阵的逆

inverse of randomly generated binary matrix in matlab

我生成了大小为 602*602 的二元非奇异矩阵

l = 602;
w = round (rand (l,l));

现在我想求这个矩阵的二进制形式的逆,我试过这个命令

 w_inv = mod(inv(w),2)

但结果不是二进制形式。帮助!

首先,您生成矩阵的方式 w 并不能保证它是非奇异的;只是在大多数情况下是这样。

撇开这个不谈,w 的倒数是 inv(w)。那是乘以 wonly 矩阵将给出单位矩阵。当然,逆矩阵一般不会是二进制的(甚至是整数值的)。如果将 mod(,... ,2) 应用于逆矩阵,它就不再是逆矩阵。


另一个问题是在 GF(2), that is, using modulo-2 addition. If that's your case, see here 中找到一个逆矩阵。

如果你在 GF(2) 中逆向安装了 Communications Systems Toolbox 可以像

>> l = 602;
>> w = gf(round(rand (l,l)));
>> whos
  Name        Size               Bytes  Class     Attributes

  l           1x1                    8  double              
  w         602x602            1450156  gf                  

>> b = inv(w);
>> all(all(b*w == eye(l,l)))

ans =

     1

>> all(all(w*b == eye(l,l)))

ans =

     1

>> 

cfr。 Galois Field Computations and Create Galois field array。 顺便说一句,在实数域上,w 的行列式不是无穷大,只是大到可以表示为 IEEE 浮点数。