在R中有Galois字段(GF)的包吗?我想用GF定义以下矩阵操作。
显然,如果不指定1+1,R就无法理解它:
> 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发布于 2013-07-11 12:37:46
我对Galois字段一无所知,但是从this question看来,加法和减法等同于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发布于 2013-07-11 12:37:24
你可以自己定义一个函数。看起来你只是在做布尔运算。
myadd <- function(x, y){(x+y) %% 2}示例
> a <- matrix(c(0,0,1,1),2,2)
> b <- matrix(c(0,1,0,1),2,2)
> a
[,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 0https://stackoverflow.com/questions/17593190
复制相似问题