eemd {Rlibeemd} | R Documentation |
EEMD Decomposition
Description
Decompose input data to Intrinsic Mode Functions (IMFs) with the Ensemble Empirical Mode Decomposition algorithm [1].
Usage
eemd(
input,
num_imfs = 0,
ensemble_size = 250L,
noise_strength = 0.2,
S_number = 4L,
num_siftings = 50L,
rng_seed = 0L,
threads = 0L
)
Arguments
input |
Vector of length N. The input signal to decompose. |
num_imfs |
Number of Intrinsic Mode Functions (IMFs) to compute. If num_imfs is set to zero, a value of num_imfs = emd_num_imfs(N) will be used, which 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. |
ensemble_size |
Number of copies of the input signal to use as the ensemble. |
noise_strength |
Standard deviation of the Gaussian random numbers used as additional noise. This value is relative to the standard deviation of the input signal. |
S_number |
Integer. Use the S-number stopping criterion for the EMD procedure with the given
values of $S$. That is, iterate until the number of extrema and zero crossings in the signal
differ at most by one, and stay the same for S consecutive iterations. Typical values are in
the range 3–8. If |
num_siftings |
Use a maximum number of siftings as a stopping criterion. If
|
rng_seed |
A seed for the GSL's Mersenne twister random number generator. A value of zero (default) denotes an implementation-defined default value. |
threads |
Non-negative integer defining the maximum number of parallel threads (via OpenMP's
|
Details
The size of the ensemble and the relative magnitude of the added noise are given by parameters
ensemble_size
and noise_strength
, respectively. The stopping criterion for the
decomposition is given by either a S-number [2] or an absolute number of siftings. In the case
that both are positive numbers, the sifting ends when either of the conditions is fulfilled.
Value
Time series object of class "mts"
where series corresponds to IMFs of the input
signal, with the last series being the final residual.
References
Z. Wu and N. Huang, "Ensemble Empirical Mode Decomposition: A Noise-Assisted Data Analysis Method", Advances in Adaptive Data Analysis, Vol. 1 (2009) 1–41
N. E. Huang, Z. Shen and S. R. Long, "A new view of nonlinear water waves: The Hilbert spectrum", Annual Review of Fluid Mechanics, Vol. 31 (1999) 417–457
See Also
Examples
x <- seq(0, 2*pi, length.out = 500)
signal <- sin(4*x)
intermittent <- 0.1 * sin(80 * x)
y <- signal * (1 + ifelse(signal > 0.7, intermittent, 0))
plot(x = x,y = y,type = "l")
# Decompose with EEMD
imfs <- eemd(y, num_siftings = 10, ensemble_size = 50, threads = 1)
plot(imfs)
# High frequencies
ts.plot(rowSums(imfs[, 1:3]))
# Low frequencies
ts.plot(rowSums(imfs[, 4:ncol(imfs)]))