Optional multivariate EMD backend
Optional multivariate EMD backend
| Property | Value |
|---|---|
| Method | MEMD |
| Input mode | multivariate |
| Trend shape | (96, 3) |
| Notebook execution | ran |
| Reconstruction RMSE | 0.00000000 |
Notebook example metric: root mean square of input - (trend + season + residual) over all samples and channels. This checks additive bookkeeping; it is not a forecast error or a component-recovery score. The separate teaching input and intermediate arrays for the animation are linked below.
How it works
Method maturity: optional-backend. Implementation: optional-backend.
MEMD uses many projection directions to construct a multivariate local mean. Its sifting preserves aligned mode slices across the input channels.
Deterministic synthetic teaching signal; not a benchmark.
Open GIF · Static PNG · Source arrays (NPZ) · Trace metadata
Follow the four steps
1. Project the data
Use Hammersley-based unit directions and locate extrema of each scalar projection.
2. Construct vector envelopes
At the projection extrema times, interpolate the original vector samples and average valid envelopes.
3. Sift jointly
Subtract the direction-averaged vector mean and repeat the multivariate stopping test.
4. Extract aligned modes
Remove the accepted multichannel IMF, continue on the vector residue, and keep the final residue.
Parameters that change the result
| Parameter | Effect on the computation |
|---|---|
n_dir (upstream trace) |
This bounded PySDKit demonstration uses 16 projection directions; the DeTime wrapper does not expose this as a documented public control. |
Stopping rule (upstream trace) |
Uses PySDKit's default Rilling-style test with a safety cap of 50 sifts. |
primary_period / explicit mode groups |
Used by DeTime after upstream extraction, independently of the projection directions. |
What this animation computes
Computed with PySDKit 0.5.0: its direction, extrema, and boundary helpers supply the vector envelopes; actual first-IMF sifting calls are recorded. The reduced direction count is a teaching setting, not a benchmark setting.
Interpretation
- This PySDKit backend requires at least three channels for MEMD; the example uses three aligned channels.
- Projection count, envelope boundaries, and stopping rules affect the result.
- Aligned IMF indexes do not establish physiological or other physical source identity.
Try the method
Use this configuration with DecompositionConfig and decompose. The animation generator supplies the teaching input and records intermediate arrays.
{
"method": "MEMD",
"params": {
"primary_period": 24
},
"backend": "python"
}
See the configuration reference for the full interface and optional dependencies.
Sources and reproduction
- PySDKit MEMD API and implementation
- Rehman and Mandic: Multivariate empirical mode decomposition
- DeTime implementation:
src/detime/methods/memd.py - DeTime implementation:
src/detime/methods/mvmd.py
Regenerate this animation with python scripts/generate_method_animations.py --methods MEMD.
The reproduction guide explains the environment,
numerical checks, coverage manifest, and how to inspect the stored arrays.
Code
case = CASES["MEMD"]
run_gallery_case("MEMD")
Output
MEMD: Optional multivariate EMD backend for shared oscillatory structure. status: ran input mode: multivariate trend shape: (96, 3) backend: python reconstruction RMSE: 0.00000000
Decomposition Plot

