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)
。那是乘以 w
的 only 矩阵将给出单位矩阵。当然,逆矩阵一般不会是二进制的(甚至是整数值的)。如果将 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 浮点数。
我生成了大小为 602*602 的二元非奇异矩阵
l = 602;
w = round (rand (l,l));
现在我想求这个矩阵的二进制形式的逆,我试过这个命令
w_inv = mod(inv(w),2)
但结果不是二进制形式。帮助!
首先,您生成矩阵的方式 w
并不能保证它是非奇异的;只是在大多数情况下是这样。
撇开这个不谈,w
的倒数是 inv(w)
。那是乘以 w
的 only 矩阵将给出单位矩阵。当然,逆矩阵一般不会是二进制的(甚至是整数值的)。如果将 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 浮点数。