首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有R的Galois场(GF)

具有R的Galois场(GF)
EN

Stack Overflow用户
提问于 2013-07-11 12:17:58
回答 2查看 621关注 0票数 0

在R中有Galois字段(GF)的包吗?我想用GF定义以下矩阵操作。

  • 1+1=0
  • 1+0=1
  • 0+1=1
  • 0+0=0

显然,如果不指定1+1,R就无法理解它:

代码语言:javascript
复制
> 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-11 12:37:46

我对Galois字段一无所知,但是从this question看来,加法和减法等同于xor。使用这个事实进行计算可能会更容易一些。

代码语言:javascript
复制
as.integer(xor(k,p))

或者,如果您想得到真正的花哨,您可以重载操作符并定义自己的类:

代码语言:javascript
复制
`+.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
票数 3
EN

Stack Overflow用户

发布于 2013-07-11 12:37:24

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

代码语言:javascript
复制
myadd <- function(x, y){(x+y) %% 2}

示例

代码语言:javascript
复制
> 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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17593190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档