我正在寻找一种快速计算伽罗瓦域2(GF(2))中矩阵A的功率的方法。 A
是双矩阵,其x
的取幂由
A^x = A * A * A * ... * A (x times)
简单的方法是将A
转换为GF(2)(因为给定矩阵A
是双矩阵)然后执行取幂运算。
Matlab代码
A1 = gf(A, 2) % // convert to galois field
A_pow_x_first = A1^x; % // Perform A^x
但是,这种方式需要很长时间才能将矩阵A
转换为GF(2)。我正在寻找一种没有GF(2)转换的快速方式。也就是说,我使用mod操作
A_pow_x_second = mod(A^x, 2)
然而,问题是第一种方式和第二种方式的结果不相似。问题是数量溢出。一些成员建议我将矩阵A
转换为int64。但是,我认为处理我的问题不是好方法。您能否建议我在matlab中快速完成此操作?提前致谢
这是一个简单的例子
>> A = [1 0 1
0 1 1
1 1 1]
第一种方式,
>> A_pow_x_first = gf(A, 2)^50
结果:
0 1 0
1 0 0
0 0 1
第二种方式
>> A_pow_x_second = mod(A^50, 2)
A_pow_x_second =
0 0 0
0 0 0
0 0 0
如何快速计算A^x
而不转换为具有类似结果的GF(2)?