View source: R/decomposeSVMD.R
| decomposeSVMD | R Documentation |
Extracts variational modes one at a time from the whole signal, keeping the centers of the modes already extracted fixed, and stops after a known number of modes or when the residual power meets a known noise power.
decomposeSVMD(signal, samplingInterval, initialCenter = 0, alpha, maxAlpha,
tau, tolerance, maxIterations = 299, stopping)
signal |
Non-empty numeric vector of finite values without |
samplingInterval |
Sampling interval |
initialCenter |
Initial center of every mode in Hz, in
|
alpha |
Initial penalty |
maxAlpha |
Final penalty, at least |
tau |
Dual ascent step |
tolerance |
Threshold |
maxIterations |
Whole number |
stopping |
Named list with the field
|
The signal is extended and transformed as in decomposeVMD.
Mode L is extracted from the whole signal with the centers
\omega_1, \ldots, \omega_{L-1} of the previous modes fixed. Its
penalty starts at alpha and doubles while below maxAlpha;
when doubling would exceed maxAlpha, one last computation runs at
maxAlpha. Each penalty restarts the inner iteration from the
spectrum and center reached, with a zero multiplier and the penalty
H_{L-1}(\omega) = \sum_{i<L} 1 / (\alpha^2 (\omega - \omega_i)^4). With
A = \alpha^2 (\omega - \omega_L)^4, the inner update is
\hat u_L \leftarrow \frac{\hat x + A \hat u_L + \hat\lambda / 2}{(1 + A)\left(1 + 2 \alpha (\omega - \omega_L)^2 + H_{L-1}\right)},
followed by the new center and the dual ascent, and it stops when the
relative change of \hat u_L is below tolerance or after
maxIterations. Extraction stops with "modeCount" after
modeCount modes; with "noisePower" when
|\sigma^2 - P_L| / \sigma^2 < \epsilon_2, P_L the mean square of
the residual on the record; or with "modeLimit" after
maxModes modes without meeting it. With maxModes = Inf the
extraction under "noisePower" continues until the condition holds.
The modes keep the extraction order. Their bandwidth formulation does not
impose the geometrical IMF conditions of EMD.
A list with
modes |
Double matrix, samples by modes, in extraction order. |
fitResidual |
Numeric vector |
centers |
Numeric vector of the centers in Hz. |
iterations |
Integer vector by mode, the inner iterations of all its penalties. |
converged |
Logical vector by mode, |
stopReason |
|
A mode without spectral energy leaves its center undefined and stops the
function with an error of class xemdZeroEnergy.
Nazari, M. and Sakhaei, S. M. (2020). Successive variational mode decomposition. Signal Processing, 107610. \Sexpr[results=rd]{tools:::Rd_expr_doi("10.1016/j.sigpro.2020.107610")}
decomposeVMD, decomposeMVMD
SamplingInterval <- 1 / 1000
Time <- seq_len(1000) * SamplingInterval
Signal <- cos(2 * pi * 2 * Time) + 0.25 * cos(2 * pi * 24 * Time) +
0.0625 * cos(2 * pi * 288 * Time)
OUT <- decomposeSVMD(Signal, samplingInterval = SamplingInterval,
initialCenter = 0,
alpha = 10 * SamplingInterval^2 / (4 * pi^2),
maxAlpha = 20000 * SamplingInterval^2 / (4 * pi^2),
tau = 0, tolerance = 1e-6, maxIterations = 299,
stopping = list(stopRule = "modeCount", modeCount = 5))
OUT$centers
OUT$stopReason
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.