# R/hilbert.R In spectral: Common Methods of Spectral Data Analysis

#### Documented in H

```#' The Hilbert-transformation
#'
#' The Hilbert-transform is a phase shifter, which represents the complex complement
#' to a real vauled signal. It is calculated in the complex frequency space of the
#' signal by using the Fourier transform. Finally, calculating \eqn{f = y + i*H(y)}
#' gives the analytic signal, with a one sided spectrum. (See \code{\link{analyticFunction}})
#'
#' @usage H(x)
#'
#' @param x real valued time series
#' @return A numeric real valued vector is returned
#' @export
H <- function(x)
{
x <- as.numeric(x)
# first calculate the normalized FFT
X <- fft(x) / length(x)

# then we need a virtual spatial vector which is symmetric with respect to
# f = 0. The signum function will do that. The advantage is, that we need not
# take care of the odd-/evenness of the length of our dataset
xf <- 0:(length(X) - 1)
xf <- xf - mean(xf)

# because the negative Frequencies are located in the upper half of the
# FFT-data vector it is nesccesary to use "-sign". This will mirror the relation
# The "-0.5" effect is that the Nyquist frequency, in case of odd data set lenghts,
# is not rejected.
Xh <- -1i * X * -sign(xf - 0.5)
return(fft(Xh, inverse = T))
}
```

## Try the spectral package in your browser

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

spectral documentation built on May 29, 2017, 9:02 a.m.