| resiftModes | R Documentation |
Re-sifts a sequence of modes, typically the averaged modes of an ensemble, by extracting the first sifted component of consecutive sums and carrying each remainder to the next mode.
resiftModes(modes, sifting)
modes |
Finite numeric matrix, samples by modes, with at least two
columns |
sifting |
Named list of sifting controls, as in
|
With u_1 = D_1 + D_2, stage i extracts
a_i = E_1(u_i), keeps the remainder q_i = u_i - a_i and adds
the next mode, u_{i+1} = q_i + D_{i+2}. The completed chain returns
K - 1 modes and the residue q_{K-1} with
"chainComplete", and
\sum_{i=1}^{K-1} a_i + q_{K-1} = \sum_{j=1}^{K} D_j.
When E_1(u_i) does not exist, the chain ends with
"insufficientExtrema", the modes a_1, \ldots, a_{i-1} and the
residue u_i + \sum_{j > i + 1} D_j, which keeps the same sum.
A list with
modes |
Double matrix, samples by the extracted modes. |
residue |
Numeric vector, the remainder of the chain. |
iterations |
Integer vector, the subtractions of each extraction. |
converged |
Logical vector by extraction, as in
|
stopReason |
|
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.
decomposeEEMD, decomposeEMD
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.
Modes <- decomposeEEMD(Signal, noise = Noise[, 1:2], amplitudeRatio = 0.2,
divisor = "realizations", sifting = Sifting)$modes
OUT <- resiftModes(Modes, sifting = Sifting)
c(input = ncol(Modes), output = ncol(OUT$modes))
OUT$stopReason
max(abs(rowSums(OUT$modes) + OUT$residue - rowSums(Modes)))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.