R/tIDWT.R

tIDWT <- function (tnsr) {
    if (tnsr@num_modes != 3)
    stop("T-SVD only implemented for 3d so far")
  modes <- tnsr@modes
  n1 <- modes[1]
  n2 <- modes[2]
  n3 <- modes[3]

  if (sum(as.numeric(intToBits(n3))) != 1)
    stop("Mode 3 must be a power of 2 otherwise using 0 padding")

  idwtz = array(0,dim=c(n1,n2,n3))
  for (i in 1:n1) {
    for (j in 1:n2) {
      x <- tnsr[i,j,]@data
      # Inverse Transform mode 3 with Haar IDWT
      l <- length(x)/2
      c.in <- x[1:l]
      d.in <- x[(l+1):length(x)]
      idwtz[i,j,] <- conbar(c.in,d.in,
                            filter.select(filter.number=1,
                            family="DaubExPhase"))
    }
  }
  idwtz <- as.tensor(idwtz)
  return(idwtz)
}

Try the rTensor2 package in your browser

Any scripts or data that you put into this service are public.

rTensor2 documentation built on Aug. 14, 2022, 9:05 a.m.