带R的伽罗瓦场(GF)

带R的伽罗瓦场(GF),r,galois-field,R,Galois Field,R中是否有Galois fields(GF)的软件包?我想用GF定义以下矩阵运算 1+1=0 1+0=1 0+1=1 0+0=0 显然,R不理解1+1而不指定它: > k <- matrix(c(0,1,1,0,1,0,0,0,0,1), ncol=10);k [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 0 1 1 0 1 0 0 0 0 1

R中是否有Galois fields(GF)的软件包?我想用GF定义以下矩阵运算

  • 1+1=0
  • 1+0=1
  • 0+1=1
  • 0+0=0
显然,R不理解
1+1
而不指定它:

> k <- matrix(c(0,1,1,0,1,0,0,0,0,1), ncol=10);k
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    1    1    0    1    0    0    0    0     1
> p <- matrix(c(0,0,0,1,1,1,0,1,0,1), ncol=10);p
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    0    0    1    1    1    0    1    0     1
> c <- k+p;c
     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,]    0    1    1    1    2    1    0    1    0     2

你可以自己定义一个函数。看起来你只是在做布尔运算

myadd <- function(x, y){(x+y) %% 2}
myadda
[,1] [,2]
[1,]    0    1
[2,]    0    1
>b
[,1] [,2]
[1,]    0    0
[2,]    1    1
>myadd(a、b)
[,1] [,2]
[1,]    0    1
[2,]    1    0

您可以自己定义一个函数。看起来你只是在做布尔运算

myadd <- function(x, y){(x+y) %% 2}
myadda
[,1] [,2]
[1,]    0    1
[2,]    0    1
>b
[,1] [,2]
[1,]    0    0
[2,]    1    1
>myadd(a、b)
[,1] [,2]
[1,]    0    1
[2,]    1    0

我对伽罗瓦域一无所知,但从中可以看出,加法和减法相当于
xor
。用这个事实来做计算可能会更容易

as.integer(xor(k,p))
或者,如果您想变得更有趣,可以重载运算符并定义自己的类:

`+.GF`<-function (x, y) as.integer((x | y) & !(x & y))
class(k)<-'GF'
class(p)<-'GF'
k+p
[1] 0 1 1 1 0 1 0 1 0 0

`+.GF`我对伽罗瓦域一无所知,但从它看来,加法和减法相当于
xor
。用这个事实来做计算可能会更容易

as.integer(xor(k,p))
或者,如果您想变得更有趣,可以重载运算符并定义自己的类:

`+.GF`<-function (x, y) as.integer((x | y) & !(x & y))
class(k)<-'GF'
class(p)<-'GF'
k+p
[1] 0 1 1 1 0 1 0 1 0 0
`+.GF`这是您唯一要使用的GF吗?或者你正在寻找关于实现任意字段运算符的建议?这是你想要使用的唯一GF吗?或者,您是否正在寻求关于实现任意字段运算符的建议?