vecToPoly = function(vec){ fun_factory = function(vec){ i = length(vec) function(x){ i <<- i-1 if(x>0 && i>0){ paste0("x^",i, " + ") }else if(i == 0){ "1" }else{ "" } } } return (paste0(sapply(vec, fun_factory(vec)),collapse="")) } toColor = function(x, color){ return(paste0("\\textcolor{",color,"}{",x,"}")) } nextColor = function(x){ if(x == 'red') return('green') else if(x == 'green') return('blue') else if(x == 'blue') return('orange') else if(x == 'orange') return('red') } block.encoder = params$block.encoder enc <- params$enc enc.corrected <- params$enc.corrected dec <- params$dec coderate <- block.encoder$data.length / block.encoder$code.length enc.matrix <- matrix(enc, ncol=block.encoder$code.length, byrow = TRUE) enc.corrected.matrix <- matrix(enc.corrected, ncol=block.encoder$code.length, byrow = TRUE) dec.matrix <- matrix(dec, ncol=block.encoder$data.length, byrow = TRUE) art.coder <- paste0("Hamming (",block.encoder$code.length,",",block.encoder$data.length,")") check.matrix <- apply(block.encoder$check.matrix, 1, function(x) paste0(x, collapse ="&")) check.matrix <- paste0(check.matrix, collapse = "\\\\") check.matrix <- paste0("\\begin{pmatrix}",check.matrix, "\\end{pmatrix}", collapse="") enc.matrix.print <- apply(enc.matrix, 1, function(x) paste0(x, collapse ="&")) enc.matrix.print <- paste0(enc.matrix.print, collapse = "\\\\") enc.matrix.print <- paste0("\\begin{pmatrix}",enc.matrix.print, "\\end{pmatrix}", collapse="") dec.print <- apply(dec.matrix, 1, function(x) paste0(x, collapse =",")) corrected.output = c() encoding <- "" for(i in 1:nrow(enc.matrix)){ encoding <- paste0(encoding, "## Dekodieren des ",i,". Blocks \n") corrected.vec = enc.corrected.matrix[i,] error.positions = c() errors = enc.matrix[i,] - enc.corrected.matrix[i,] for(j in 1:length(errors)){ if(errors[j] != 0){ corrected.vec[j] = toColor(corrected.vec[j],'green') error.positions = c(error.positions,j) } } enc.vec <- paste0(enc.matrix[i,], collapse="\\\\") enc.vec <- paste0("\\begin{pmatrix}",enc.vec, "\\\\ \\end{pmatrix}^T", collapse="") if(length(error.positions)>0){ res.vec <- block.encoder$check.matrix[,error.positions[1]] res.vec <- sapply(res.vec, function(x) toColor(x,'red')) check.matrix.print <- block.encoder$check.matrix check.matrix.print[,error.positions[1]] = sapply(check.matrix.print[,error.positions[1]], function(x) toColor(x,'red')) check.matrix.print <- apply(check.matrix.print, 1, function(x) paste0(x, collapse ="&")) check.matrix.print <- paste0(check.matrix.print, collapse = "\\\\") check.matrix.print <- paste0("\\begin{pmatrix}",check.matrix.print, "\\end{pmatrix}", collapse="") }else{ res.vec <- rep(0,nrow(block.encoder$check.matrix)) res.vec <- sapply(res.vec, function(x) toColor(x,'green')) check.matrix.print <- check.matrix } res.vec <- paste0(res.vec, collapse="\\\\") res.vec <- paste0("\\begin{pmatrix}",res.vec, "\\\\ \\end{pmatrix}^T", collapse="") encoding <- paste0(encoding, "$$",enc.vec,". ",check.matrix.print," = ",res.vec,"$$\n\n") encoding <- paste0(encoding,"Kodewort: (",paste0(enc.matrix[i,],collapse = ","),") \n\n") encoding <- paste0(encoding,"Fehlerindex: ",paste0(error.positions,collapse = " | ")," \n\n") encoding <- paste0(encoding,"Korrigiertes Kodewort: (",paste0(corrected.vec,collapse = ","),") \n\n") corrected.output = c(corrected.output,corrected.vec) if(length(error.positions)>0) dec.print[i] = toColor(dec.print[i],'green') } enc.corrected.matrix.print <- apply(matrix(corrected.output,ncol=block.encoder$code.length, byrow=T), 1, function(x) paste0(x, collapse ="&")) enc.corrected.matrix.print <- paste0(enc.corrected.matrix.print, collapse = "\\\\") enc.corrected.matrix.print <- paste0("\\begin{pmatrix}",enc.corrected.matrix.print, "\\end{pmatrix}", collapse="") dec.print = paste0(dec.print,collapse = ",")
r art.coder
Kodiererr check.matrix
$$r block.encoder$data.length
}{r block.encoder$code.length
} \approx r round(coderate,2)
$$r block.encoder$code.length
aufteilenr enc
)\end{center}r enc.matrix.print
$$r encoding
r enc.corrected.matrix.print
$$r dec.print
)\end{center}Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.