This is about “Complete ensemble EMD with adaptive noise”.

class PyEMD.CEEMDAN(trials=100, epsilon=0.005, ext_EMD=None, **config)[source]

“Complete Ensemble Empirical Mode Decomposition with Adaptive Noise”

“Complete ensemble empirical mode decomposition with adaptive noise” (CEEMDAN) [Rd0298acbfa1b-Torres2011] is noise-assisted EMD technique. Word “complete” presumably refers to decomposing completly everything, even added perturbation (noise).

Provided implementation contains proposed “improvmenets” from paper [Rd0298acbfa1b-Colominas2014].

Any parameters can be updated directly on the instance or passed through a configuration dictionary.

Goodness of the decomposition can be configured by modifying threshold values. Two are range_thr and total_power_thr which relate to the value range (max - min) and check for total power below, respectively.

trials : int (default: 100)

Number of trials or EMD performance with added noise.

epsilon : float (default: 0.005)

Scale for added noise (\(\epsilon\)) which multiply std \(\sigma\): \(\beta = \epsilon \cdot \sigma\)

ext_EMD : EMD (default: None)

One can pass EMD object defined outside, which will be used to compute IMF decompositions in each trial. If none is passed then EMD with default options is used.


[Rd0298acbfa1b-Torres2011]M.E. Torres, M.A. Colominas, G. Schlotthauer, P. Flandrin A complete ensemble empirical mode decomposition with adaptive noise. Acoustics, Speech and Signal Processing (ICASSP), 2011, pp. 4144–4147
[Rd0298acbfa1b-Colominas2014]M.A. Colominas, G. Schlotthauer, M.E. Torres, Improved complete ensemble EMD: A suitable tool for biomedical signal processing, In Biomed. Sig. Proc. and Control, V. 14, 2014, pp. 19–29
__init__(self, trials=100, epsilon=0.005, ext_EMD=None, **config)[source]

Configuration can be passed through config dictionary. For example, updating threshold would be through:

>>> config = {"range_thr": 0.001, "total_power_thr": 0.01}
>>> emd = EMD(**config)
emd(self, S, T, max_imf=-1)[source]

Vanilla EMD method.

Provides emd evaluation from provided EMD class. For reference please see PyEMD.EMD.

end_condition(self, S, cIMFs, max_imf)[source]

Test for end condition of CEEMDAN.

Procedure stops if:

  • number of components reach provided max_imf, or
  • last component is close to being pure noise (range or power), or
  • set of provided components reconstructs sufficiently input.
S : numpy array

Original signal on which CEEMDAN was performed.

cIMFs : numpy 2D array

Set of cIMFs where each row is cIMF.

end : bool

Whether to stop CEEMDAN.

generate_noise(self, scale, size)[source]

Generate noise with specified parameters. Currently supported distributions are:

  • normal with std equal scale.
  • uniform with range [-scale/2, scale/2].
scale : float

Width for the distribution.

size : int

Number of generated samples.

noise : numpy array

Noise sampled from selected distribution.

noise_seed(self, seed)[source]

Set seed for noise generation.