binVector <- function(n, min.length) {

  result <- integer()
  i <- 0
  while (n != 0) {
    result <- c(n %% 2, result)
    n = n %/% 2
    i <- i + 1
  }

  zeros <- rep(0, times = min.length)

  result <- c(zeros, result)

  return(paste(tail(result,min.length), collapse = ""))
}

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 && x>0){
        "1"
      }else{
        ""
      }
    }
  }
  vec = sapply(vec, fun_factory(vec))
  return (paste0(vec[vec != ""],collapse=" + "))
}

decToBin <- function(x) { if (all(x<2)) x else paste(decToBin(x%/%2), x%%2, sep="") }

octalToDec <- function(x) {
  res <- numeric()
  for(j in 1:length(x)) {
  dec <- 0
  i <- 0
    while (x[j] > 0) {
      dec <- dec + (x[j] %% 10) * (8^i)
      i <- i + 1
      x[j] <- x[j] %/% 10
    }
  res[j] <- dec
  }

  return(res)
}

gcd <- function(n, m) {
  if (n == 0 && m == 0) return(0)

  n <- abs(n); m <- abs(m)
  if (m > n) {
    t <- n; n <- m; m <- t
  }
  while (m > 0) {
    t <- n
    n <- m
    m <- t %% m
  }
  return(n)
}
node.short <- 20
node.long <- 45
dots <- function (v, node) if(length(v) > node) ", ..." else ""

if (params$encoder$type == 'BCH') {
  art.coder <- paste0("BCH (",params$encoder$code.length,",",params$encoder$data.length,",",params$encoder$code.t*2+1,")")
  gen.poly.print <- vecToPoly(rev(params$encoder$gen.poly))
  coder.info <- paste0("- Generatorpolynom : $$g(x) =  ", gen.poly.print,"$$\n\n - Verbesserbare Fehler pro Block: $$",params$encoder$code.t,"$$\n\n")
} else {
  art.coder <- paste0("Hamming (",params$encoder$code.length,",",params$encoder$data.length,")")
  gen.matrix <- apply(params$encoder$gen.matrix, 1, function(x) paste0(x, collapse ="&"))
  gen.matrix <-  paste0(gen.matrix, collapse = "\\\\")
  gen.matrix <- paste0("\\begin{pmatrix}",gen.matrix, "\\end{pmatrix}", collapse="")
  coder.info <- paste0("- Generatormatrix : $$G =  ", gen.matrix,"$$\n\n")

}

Kodierer Information

Simulationsdaten

Plot

df <- params$dataframe
if (max(df$ber) == 0) {
  ggplot2::ggplot(df,ggplot2::aes(db))+ggplot2::geom_line(ggplot2::aes(y = ber))+ggplot2::xlab("Signal Rausch Verh\u00e4ltnis [dB]")+ggplot2::ylab("Bitfehlerrate")
} else {
  ggplot2::ggplot(df,ggplot2::aes(db))+ggplot2::geom_line(ggplot2::aes(y = ber))+ggplot2::scale_y_log10(limits = c(min(df$ber) / 2, max(df$ber) * 2))+ggplot2::xlab("Signal Rausch Verh\u00e4ltnis [dB]")+ggplot2::ylab("Bitfehlerrate")
}

Statistik

Bitefehlerrate:

summary(df$ber)


DaniWi/Channelcoding documentation built on May 6, 2019, 1:23 p.m.