0

Rにガロア体(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
4

2 に答える 2

3

ガロア体については何も知りませんが、この質問から、足し算と引き算は に相当するよう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-11T12:37:46.533 に答える
2

関数を自分で定義することもできます。ブール演算を行っているようです。

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    0
于 2013-07-11T12:37:24.820 に答える