# hilbertspec: Hilbert Transform and Instantaneous Frequency In EMD: Empirical Mode Decomposition and Hilbert Spectral Analysis

## Description

This function calculates the amplitude and instantaneous frequency using Hilbert transform.

## Usage

 `1` ```hilbertspec(xt, tt=NULL, central=FALSE) ```

## Arguments

 `xt` matrix of multiple signals. Each column represents a signal. `tt` observation index or time index `central` If central=TRUE, use central difference method to calculate the instantaneous frequency

## Details

This function calculates the amplitude and instantaneous frequency using Hilbert transform.

## Value

 `amplitude` matrix of amplitudes for multiple signals `xt` `instantfreq` matrix of instantaneous frequencies for multiple signals `xt` `energy` cumulative energy of multiple signals

## References

Huang, N. E., Shen, Z., Long, S. R., Wu, M. L. Shih, H. H., Zheng, Q., Yen, N. C., Tung, C. C. and Liu, H. H. (1998) The empirical mode decomposition and Hilbert spectrum for nonlinear and nonstationary time series analysis. Proceedings of the Royal Society London A, 454, 903–995.

Dasios, A., Astin, T. R. and McCann C. (2001) Compressional-wave Q estimation from full-waveform sonic data. Geophysical Prospecting, 49, 353–373.

`spectrogram`.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16``` ```tt <- seq(0, 0.1, length = 2001)[1:2000] f1 <- 1776; f2 <- 1000 xt <- sin(2*pi*f1*tt) * (tt <= 0.033 | tt >= 0.067) + sin(2*pi*f2*tt) ### Before treating intermittence interm1 <- emd(xt, tt, boundary="wave", max.imf=2, plot.imf=FALSE) ### After treating intermittence interm2 <- emd(xt, tt, boundary="wave", max.imf=2, plot.imf=FALSE, interm=0.0007) par(mfrow=c(2,1), mar=c(2,2,2,1)) test1 <- hilbertspec(interm1\$imf) spectrogram(test1\$amplitude[,1], test1\$instantfreq[,1]) test2 <- hilbertspec(interm2\$imf, tt=tt) spectrogram(test2\$amplitude[,1], test2\$instantfreq[,1]) ```

### Example output

```Loading required package: fields
Spam version 2.1-1 (2017-07-02) is loaded.
Type 'help( Spam)' or 'demo( spam)' for a short introduction
and overview of this package.
Help for individual functions is also obtained by adding the
suffix '.spam' to the function name, e.g. 'help( chol.spam)'.

Attaching package: 'spam'

The following objects are masked from 'package:base':

backsolve, forwardsolve