NCL Home > Documentation > Functions > General applied math, Statistics

# eemd

Perform ensemble empirical mode decomposition (EEMD).

Available in version 6.4.0 and later.

## Prototype

```	function eemd (
x         : numeric,
nimf  [1] : integer,
nrep  [1] : integer,
noise [1] : numeric,        [ float, double ],
opt   [1] : logical,
dims  [1] : integer
)

return_val  :  numeric
```

## Arguments

x

A variable of numeric type and any dimensionality.

nimf

Number of Intrinsic Mode Functions (IMFs) to compute. If num_imfs is set to zero, an 'appropriate' value of num_imfs will be used. This corresponds to a maximal number of IMFs. Note that the final residual is also counted as an IMF in this respect, so you most likely want at least num_imfs=2.

nrep

Number of replications (ie, local ensemble) members to be used.

noise

Standard deviation of the Gaussian random numbers used as additional noise. This value is relative to the standard deviation of the input signal.

opt

Options parameter.

• S_number - Use the (integer) S-number to specify stopping criterion for the EMD procedure Typical values are in the range 3-8. If S_number is zero, this stopping criterion is ignored. Default is 4
• num_siftings - Use a maximum number of siftings as a stopping criterion. If num_siftings is zero, this stopping criterion is ignored. Default is 50.
• rng_seed - A seed for the random number generator. A value of zero (default) denotes an implementation-defined default value.

dims

The dimension of x on which to perform the EMD.

## Return value

A variable containing the Intrinsic Mode Functions (IMFs):

• x(time) - returns IMF(nimf,time)
• x(time,npts) - returns IMF(nimf,time,npts)
• x(time,lat,lon) - IMF(nimf,time,nlat,mlon)
Double if x is double, float otherwise.

## Description

EMD (Empirical Mode Decomposition) is an adaptive time-space analysis method suitable for processing series that are non-stationary and non-linear. EMD performs operations that partition a series into 'modes' (IMFs; Intrinsic Mode Functions) without leaving the time domain. It can be compared to other time-space analysis methods like Fourier Transforms and wavelet decomposition. Like these methods, EMD is not based on physics. However, the modes may provide insight into various signals contained within the data. In particular, the method is useful for analyzing natural signals, which are most often non-linear and non-stationary. Some common examples would include the Southern Oscillation Index (SOI), NINO-3.4 Index, etc.

EEMD (Ensemble EMD) is a noise assisted data analysis method. EEMD consists of "sifting" an ensemble of white noise-added signal. EEMD can separate scales naturally without any a priori subjective criterion selection as in the intermittence test for the original EMD algorithm.

Wu and Huang (2005) state: "White noise is necessary to force the ensemble to exhaust all possible solutions in the sifting process, thus making the different scale signals to collate in the proper intrinsic mode functions (IMF) dictated by the dyadic filter banks. As the EMD is a time space analysis method, the white noise is averaged out with sufficient number of trials; the only persistent part that survives the averaging process is the signal, which is then treated as the true and more physical meaningful answer." Further, they state: "[EEMD] represents a substantial improvement over the original EMD and is a truly noise assisted data analysis (NADA) method."

CEEMDAN (Complete Ensemble Empirical Mode Decomposition with Adaptive Noise) is a variation of the EEMD algorithm that provides an exact reconstruction of the original signal and a better spectral separation of the Intrinsic Mode Functions (IMFs).

IMPORTANT NOTE: NCL interfaces to C code provided by Luukko et al. (2016). There have been reports that for some of the modes, this code suffers from the mode mixing problem due to the stoppage criterion that is used in P. Luukko's code. The NCL team is looking into another version of EEMD to see if this issue can be improved.

```REFERENCES:

Colominas, M. A., Schlotthauer, G., and Torres, M. E. (2014):
Improved complete ensemble EMD:
A suitable tool for biomedical signal processing.
Biomedical Signal Processing and Control, 14, 19-29.

Hsuan, R.  (2014):
Ensemble Empirical Mode Decomposition Parameters Optimization for
Spectral Distance Measurement in Hyperspectral Remote Sensing Data
Remote Sens. 2014, 6(3), 2069-2083; doi:10.3390/rs6032069
http://www.mdpi.com/2072-4292/6/3/2069

Kim, D., and HS. Uh (2009):
EMD: A Package for Empirical Mode Decomposition and Hilbert Spectrum
https://journal.r-project.org/archive/2009-1/RJournal_2009-1_Kim+Oh.pdf

Lambert, M.  et al:
Empirical Mode Decomposition: A project website for the course ELEC 301 at Rice University.
https://www.clear.rice.edu/elec301/Projects02/empiricalMode/

Luukko, P.J.J., Helske, J. and Rasanen, E. Comput Stat (2016) 31: 545-557:
Introducing libeemd: a program package for performing the ensemble empirical mode decomposition
C-Code: https://bitbucket.org/luukko/libeemd

Salisbury, J.I. and Wimbush, M. (2002):
Using modern time series analysis techniques to predict ENSO events from the SOI time series
Nonlinear Processes in Geophysics (2002) 9: 341–345
http://www.nonlin-processes-geophys.net/9/341/2002/npg-9-341-2002.pdf

Torres, M. E., Colominas, M. A., Schlotthauer, G., & Flandrin, P. (2011, May):
A complete ensemble empirical mode decomposition with adaptive noise
(ICASSP), 2011 (pp. 4144-4147). DOI: 10.1109/ICASSP.2011.5947265.
Also: http://ieeexplore.ieee.org/document/5947265

Wang, T., M. Zhang, Q. Yu, and H. Zhang, 2012:
Comparing the applications of EMD and EEMD on time–frequency analysis of seismic signal.
J. Appl. Geophys., 83, 29–34, doi:https://doi.org/10.1016/j.jappgeo.2012.05.002.

Wu, Z. and Huang, N. (2009):
Ensemble Empirical Mode Decomposition: A Noise-Assisted Data Analysis Method.

Wu, Z, et al (2015):
Fast multidimensional ensemble empirical mode decomposition for the analysis of big spatio-temporal datasets
Philos Trans A Math Phys Eng Sci. 2016 Apr 13; 374(2065): 20150197.  doi:  10.1098/rsta.2015.0197
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4792406/

Wu, Y. and Shen, BW (2016):
An Evaluation of the Parallel Ensemble Empirical Mode Decomposition Method
in Revealing the Role of Downscaling Processes Associated with
African Easterly Waves in Tropical Cyclone Genesis
doi: http://dx.doi.org/10.1175/JTECH-D-15-0257.1
http://journals.ametsoc.org/doi/abs/10.1175/JTECH-D-15-0257.1
[lots of references]
```

## Examples

Please see the EEMD Applications page for more extensive examples.

Example 1: This example is based upon the simple sinusoid presented in Kim and Oh (2009).

```   N   = 3000
tt  = fspan(0, 9, N)           ; x-axis (float)
pi  = get_pi (typeof(tt))

xt  = sin(pi*tt) + sin(2*pi*tt) + sin(6*pi*tt) + 0.5*tt
;print(tt+"   "+xt)

; set 'eemd' arguments and options

nrep  = 250
nimf  = 10                     ; nimf=0 , function will calculate
noise = 0.2
dims  = 0
opt   = False

e     = eemd(xt,nimf,nrep,noise,opt,dims)     ; (nimf,N)
e@long_name = "EEMD"
printVarSummary(e)
printMinMax(e,0)
```