View source: R/decomposeMVMD.R
| decomposeMVMD | R Documentation |
Decomposes the channels of a sampled multichannel signal into modes whose channel coordinates share one center frequency.
decomposeMVMD(signal, samplingInterval, initialCenters, alpha, tau,
fixedZeroCenter, tolerance, maxIterations = 499)
signal |
Numeric matrix of finite values, samples by channels, with at least one row and one column, as composed by the caller and without standardization. |
samplingInterval |
Sampling interval |
initialCenters |
Numeric vector of initial center frequencies in Hz,
each in |
alpha |
Penalty |
tau |
Dual ascent step |
fixedZeroCenter |
|
tolerance |
Threshold |
maxIterations |
Whole number |
Each channel is extended and transformed as in decomposeVMD.
In each sweep the coordinate c of mode k is
\hat u_{k,c} = \frac{\hat x_c - \sum_{i \ne k} \hat u_{i,c} + \hat\lambda_c / 2}{1 + 2 \alpha (\omega - \omega_k)^2},
with a denominator common to the channels; the new center weights
|\omega| by the power summed over the channels, and the multiplier of
each channel is updated with step \tau. The iteration stops with
"tolerance" when
\sum_k \sum_c \|\hat u_{k,c}^{(n+1)} - \hat u_{k,c}^{(n)}\|^2 / \|\hat u_{k,c}^{(n)}\|^2 < \epsilon,
which cannot happen before the second sweep, or with
"iterationLimit" after maxIterations sweeps. A coordinate
without energy in the previous sweep leaves its ratio undefined, so the
test fails until maxIterations. The channels keep the order
received. The joint bandwidth formulation does not impose the geometrical
IMF conditions of EMD. A shared spectral center does not require identical
amplitudes or instantaneous frequencies across channels.
A list with
modes |
Double array, samples by modes by channels. |
fitResidual |
Numeric matrix, samples by channels,
|
centers |
Numeric vector of the |
iterations |
Integer vector repeating, for every mode, the number of sweeps. |
converged |
Logical vector repeating, for every mode, the result of the joint stopping test. |
stopReason |
|
A mode without energy over all its channels leaves its center undefined and
stops the function with an error of class xemdZeroEnergy.
ur Rehman, N. and Aftab, H. (2019). Multivariate Variational Mode Decomposition. arXiv:1907.04509.
decomposeVMD, decomposeSVMD,
decomposeTSL
SamplingInterval <- 1 / 1000
Time <- seq_len(1000) * SamplingInterval
Signal <- cbind(cos(2 * pi * 2 * Time) + 0.25 * cos(2 * pi * 24 * Time) +
0.0625 * cos(2 * pi * 288 * Time),
cos(2 * pi * 2 * Time),
0.25 * cos(2 * pi * 24 * Time))
OUT <- decomposeMVMD(Signal, samplingInterval = SamplingInterval,
initialCenters = (0:2) / (6 * SamplingInterval),
alpha = 2000 * SamplingInterval^2 / (8 * pi^2),
tau = 0.5, fixedZeroCenter = FALSE, tolerance = 1e-6,
maxIterations = 98)
dim(OUT$modes)
OUT$centers
OUT$stopReason
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.