Domanda

Ho un set di 0 e 1 rappresentato come elenco inizialmente creato con sample(c(0,1), n, replace=TRUE), dove n è la lunghezza del mio numero binario.Attualmente sto utilizzando un convertitore BCD per convertire il mio numero binario in un numero decimale, questo è visto qui:

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
}
.

Vorrei invece utilizzare un convertitore di graycode.to.Decimale che fa lo stesso lavoro del mio convertitore BCD.to.Decimale, ma usando invece il codice Grigio.

Nota: la velocità conta per questo, e vorrei farlo nel modo più efficiente possibile.Sono consapevole del fatto che il mio convertitore BCD non è probabilmente il più efficiente, è solo il più semplice, se hai un modo significativamente più efficiente di gestire la conversione BCD, sarei anche interessato a sentire questo.

Cos'è il codice grigio?: http://en.wikipedia.org/wiki/Gray_codeek/a>

È stato utile?

Soluzione 2

Ecco la semplice soluzione alla mia domanda, l'algoritmo ha finito di essere molto più facile di quanto è apparso per la prima volta.L'algoritmo utilizzato può essere trovato qui .

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))
}
.

Questo codice convertirà il codice in binario in cui è possibile utilizzare una conversione binaria per convertirlo in un numero decimale.Sto scegliendo di usare il codice fornito da flodel nella sezione Commenti.

Binary.to.Decimal <- function(binaryNumb)
{
  L = length(binaryNumb)
  sum(2L^(seq_along(binaryNumb)-1L) * rev(binaryNumb))
}
.

Altri suggerimenti

Bene, c'è un algoritmo di conversione su quella pagina wiki, anche se in c, quindi dovrai portarlo.
Di nuovo sulla pagina Wiki, c'è questo link http://aggregate.org/magic/#GRAY%20code% 20Conversion Che elenca un numero di algoritmi di conversione, la maggior parte dei quali sembra abbastanza semplice da codificare.

BTW, OH Qualunque cosa: GA::grey2binary e GA::binary2grey esistono già.Bah: -)

ETA - Sono stato abbastanza fortunato da trovare questo via Mr.Google, ma in generale il pacchetto sos è un ottimo strumento R-Search.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top