Skip to content
Extraits de code Groupes Projets
hilbert.R 594 octets
Newer Older
  • Learn to ignore specific revisions
  • Michel Crucifix's avatar
    Michel Crucifix a validé
    #' Hilbert extension
    #'
    #' Computes the extension of a real valued signal to a complex signas with
    #' the Hilbert transform
    #'
    #'
    #' @param x Input array
    #' @return Analytic signal, of length \code{n}, returned as a complex vector or
    #'
    #' @export
    hilbert_extension <- function(x) {
    
      n = length(x)
      # construct multiplication vector
      if (n %% 2 == 0) {
        v <- c(0, rep(-1i, n / 2 - 1), 1, rep(1i, n / 2 - 1))
      } else {
        v <- c(0, rep(-1i, (n - 1) / 2), rep(1i, (n - 1) / 2))
      }
    
      # compute the Hilbert transform
      return( x + 1i* Re(stats::fft(stats::fft(x)*v, inverse=TRUE))/n )
    }