View source: R/decomposeICEEMDAN.R
| decomposeICEEMDAN | R Documentation |
Computes each residue as the average local mean of the previous residue perturbed by a mode of supplied noise realizations, and each mode as the difference between consecutive residues.
decomposeICEEMDAN(signal, noise, amplitudeRatio = 0.2, normalizeNoise,
sifting)
signal |
Numeric vector of at least two finite values without
|
noise |
Finite numeric matrix with one row per sample of |
amplitudeRatio |
Dimensionless ratio |
normalizeNoise |
|
sifting |
Named list of sifting controls, as in
|
Each column of noise is decomposed once with sifting,
\eta_k^{(m)} = E_k(w^{(m)}). From r_0 = x, before stage k
the common residue r_{k-1} ends the decomposition, in this order, with
"terminalResidue" when it has at most one extremum, with
"modeLimit" when k - 1 equals sifting$maxModes and with
"insufficientExtrema" when its envelopes cannot be built. Stage
k perturbs r_{k-1} with
p^{(m)} = \beta_{k-1}^{(m)} \eta_k^{(m)}, where
\beta_0^{(m)} = \varepsilon_0 \, \mathrm{sd}(x) / \mathrm{sd}(\eta_1^{(m)})
and, for k \ge 2, \beta_{k-1} = \varepsilon_0 \, \mathrm{sd}(r_{k-1}),
divided by \mathrm{sd}(\eta_k^{(m)}) when normalizeNoise is
TRUE; standard deviations use the divisor N - 1. With
A the average first mode of r_{k-1} + p^{(m)} and \bar p
the mean perturbation, the new residue is the mean local mean and the mode
the difference of residues:
r_k = r_{k-1} + \bar p - A, \qquad d_k = r_{k-1} - r_k.
A realization without \eta_k contributes a null perturbation and
stays in the divisor M.
A list with
modes |
Double matrix, samples by modes. |
residue |
Numeric vector, the final common residue. |
iterations |
Integer vector by mode, the sum of the subtractions of
the |
converged |
Logical vector by mode: |
stopReason |
|
A noise mode of zero standard deviation leaves its scale undefined and
stops the function with an error of class xemdZeroEnergy.
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. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.bspc.2014.06.009")}
The selection of the reflected extrema and the spline interpolation of the envelope nodes are adapted from emd.m (G. Rilling, March 2007), distributed with CEEMDAN revision af9a0f83, copyright (c) 2020 Marcelo A. Colominas, MIT License; see the NOTICE file of the installed package.
decomposeCEEMDAN, decomposeEEMD,
decomposeCEEMD
Time <- seq(0, 9, length.out = 1000)
Signal <- sin(pi * Time) + sin(2 * pi * Time) + sin(6 * pi * Time) +
0.5 * Time
set.seed(628)
Noise <- t(matrix(stats::rnorm(10L * length(Signal)), nrow = 10L,
byrow = TRUE))
Sifting <- list(stopRule = "doubleThreshold", thresholds = c(0.05, 0.5),
fraction = 0.05, maxSift = 2000, boundary = "reflection",
maxModes = Inf)
# Two of the ten realizations keep the example short.
OUT <- decomposeICEEMDAN(Signal, noise = Noise[, 1:2], amplitudeRatio = 0.2,
normalizeNoise = TRUE, sifting = Sifting)
dim(OUT$modes)
OUT$stopReason
max(abs(rowSums(OUT$modes) + OUT$residue - Signal))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.