Signals are decomposed into oscillatory modes by empirical mode
decomposition and its ensemble, complementary ensemble, complete
ensemble, masked, bivariate and multivariate variants, by variational
mode decomposition and its multivariate and successive variants, and by
local mean decomposition, iterative filtering, time varying filter
empirical mode decomposition and the empirical wavelet transform; the
synchrosqueezed wavelet transform is also provided. Empirical mode
decomposition is due to Huang et al. (1998)
xemd provides R functions for signal decomposition and mode analysis. The
library and the xemd command-line interface are installed together from the
repository root with the product installer.
In empirical mode decomposition (EMD), the signal's extrema define the local scales used to extract components. Each extracted component is subtracted from the remaining signal, leaving a final residue. Hilbert analysis describes each component through its analytic signal: its modulus gives instantaneous amplitude, and the derivative of its continuous phase divided by $2\pi$ gives instantaneous frequency where that phase is defined and differentiable. The introduction develops these concepts alongside an EMD example and a variational mode decomposition (VMD) example.
A decomposition gives a representation of the observed signal. Its modes do not automatically identify separate physical sources or isolate noise. The methods guide explains how the methods define their components; the interpretation guide distinguishes numerical convergence, reconstruction, mode diagnostics and evidence for retaining a component.
| Task | Documentation |
|---|---|
| Understand modes, residues and instantaneous frequency | Introduction |
| Choose a method and understand its controls | Methods and controls |
| Organize seismic records and reconstruct a selection | Seismic records |
| Interpret diagnostics, noise comparisons and selection | Validation and interpretation |
| Check exact arguments, units and returned fields | Function reference |
| Find the published work on the methods | Bibliography |
This signal combines sinusoidal oscillations with a trend. The sifting controls specify the envelope-centering test, the boundary treatment and the iteration limit; they are the configuration of this example.
library(xemd)
Time <- seq(0, 9, length.out = 3000)
Signal <- sin(pi * Time) + sin(2 * pi * Time) + sin(6 * pi * Time) +
0.5 * Time
Sifting <- list(stopRule = "doubleThreshold", thresholds = c(0.05, 0.5),
fraction = 0.05, maxSift = 2000, boundary = "reflection",
maxModes = Inf)
OUT <- decomposeEMD(Signal, sifting = Sifting)
OUT$modes contains the extracted components and OUT$residue contains
what remains. Their sum reconstructs the input up to rounding. This additive
identity does not establish whether an extracted mode recovers one of the
original sinusoids. OUT$converged reports acceptance by the chosen sifting
rule, while OUT$stopReason reports why extraction ended. The
worked introduction
shows those outputs, a reconstruction check and the IMF diagnostics.