首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中将灰度码转换为十进制码

在R中将灰度码转换为十进制码
EN

Stack Overflow用户
提问于 2013-11-18 00:42:51
回答 2查看 1.8K关注 0票数 0

我有一组0和1的集合,表示为最初用sample(c(0,1), n, replace=TRUE)创建的列表,其中n是二进制数的长度。我目前正在使用BCD转换器将二进制数转换为十进制数,如下所示:

代码语言:javascript
复制
BCD.to.Decimal <- function(binaryNumb)
{
  binaryLength = length(binaryNumb)
  decimalNumb = 0
  for(i in 1:binaryLength)
  {
    if ( binaryNumb[i] == 1)
      decimalNumb = decimalNumb + 2^(binaryLength - i)
 }

  decimalNumb
}

我想使用GrayCode.To.Decimal转换器,它的工作与我的BCD.to.Decimal转换器相同,但使用格雷代码代替。

注意:速度对此很重要,我想以最有效的方式来做。我知道我的BCD转换器可能不是最有效的,它只是最简单的,如果你有一种更有效的方法来处理BCD转换,我也会感兴趣的。

什么是灰色代码?:代码

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-29 03:03:51

这是我问题的简单解决方案,这个算法最终比最初出现的要简单得多。所使用的算法可以找到这里

代码语言:javascript
复制
GrayCode.to.Decimal <- function(grayNumb)
{
  binaryNumb = vector("numeric",length(grayNumb))
  binaryNumb[1] = grayNumb[1]
  for (i in 2:length(grayNumb))
  {
    binaryNumb[i] = xor(grayNumb[i], binaryNumb[i - 1])
  }

  return(Binary.to.Decimal(binaryNumb))
}

此代码将将代码转换为二进制代码,然后可以使用二进制转换将其转换为十进制数。我选择使用注释部分中的flodel提供的代码。

代码语言:javascript
复制
Binary.to.Decimal <- function(binaryNumb)
{
  L = length(binaryNumb)
  sum(2L^(seq_along(binaryNumb)-1L) * rev(binaryNumb))
}
票数 0
EN

Stack Overflow用户

发布于 2013-11-18 12:39:29

嗯,在这个Wiki页面上有一个转换算法,尽管是在c中,所以您必须移植它。

同样,在wiki页面上,有一个链接http://aggregate.org/MAGIC/#Gray%20Code%20Conversion,它列出了许多转换算法,其中大多数看起来很容易编码。

顺便说一句,哦,随便吧:GA::grey2binaryGA::binary2grey已经存在了。巴哈:-)

ETA -我很幸运通过Mr.Google找到了这个,但是总的来说,包sos是一个很好的R-搜索工具。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20038185

复制
相关文章

相似问题

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