Variational mode decomposition

`[___] = vmd(`

performs the variational mode decomposition with additional options specified by one or
more `x`

,`Name,Value`

)`Name,Value`

pair arguments.

`vmd(___)`

plots the original signal, IMFs, and the
residual signal as subplots in the same figure.

The `vmd`

function calculates the IMFs in the frequency domain,
reconstructing *X*(*f*) =
DFT{*x*(*t*)} in terms of *U _{k}*(

The Lagrange multiplier introduced in Optimization has the Fourier transform Ʌ(*f*). The length of the Lagrange multiplier vector is the length of the extended
signal.

Unless otherwise specified in `'InitialIMFs'`

, the IMFs are initialized
at zero. Initialize `'CentralFrequencies'`

using one of the methods
specified in `'InitializeMethod'`

. `vmd`

iteratively
updates the modes until one of these conditions is met:

$$\sum _{k}{\Vert {u}_{k}^{n+1}(t)-{u}_{k}^{n}(t)\Vert}_{2}^{2}/{\Vert {u}_{k}^{n}(t)\Vert}_{2}^{2}}<{\epsilon}_{\text{r}$$ and $$\sum _{k}{\Vert {u}_{k}^{n+1}(t)-{u}_{k}^{n}(t)\Vert}_{2}^{2}}<{\epsilon}_{\text{a}$$ are jointly satisfied, where ε

_{r}and ε_{a}are specified using`'RelativeTolerance'`

and`'AbsoluteTolerance'`

, respectively.The algorithm exceeds the maximum number of iterations specified in

`'MaxIterations'`

.

For the (*n* + 1) -th iteration, the algorithm performs these steps:

Iterate over the

*K*modes of the signal (specified using`'NumIMF'`

) to compute:The frequency-domain waveforms for each mode using

$${U}_{k}^{n+1}(f)=\frac{X(f)-{\displaystyle \sum _{i<k}{U}_{k}^{n+1}(f)}-{\displaystyle \sum _{i>k}{U}_{k}^{n}}(f)+\frac{{\Lambda}^{n}}{2}(f)}{1+2\alpha {\{2\pi (f-{f}_{k}^{n})\}}^{2}},$$

where $${U}_{k}^{n+1}(f)$$ is the Fourier transform of the

*k*th mode calculated in the (*n*+ 1)-th iteration.The

*k*th central frequency $${f}_{k}^{n+1}$$ using$${f}_{k}^{n+1}=\frac{{\displaystyle {\int}_{0}^{\infty}{\left|{U}_{k}^{n+1}(f)\right|}^{2}\text{\hspace{0.17em}}f\text{\hspace{0.17em}}}df}{{\displaystyle {\int}_{0}^{\infty}{\left|{U}_{k}^{n+1}(f)\right|}^{2}}\text{\hspace{0.17em}}df}\approx \frac{{\displaystyle \sum f{\left|{U}_{k}^{n+1}(f)\right|}^{2}\text{\hspace{0.17em}}}}{{\displaystyle \sum {\left|{U}_{k}^{n+1}(f)\right|}^{2}\text{\hspace{0.17em}}}}.$$

Update the Lagrange multiplier using $${\Lambda}^{n+1}(f)={\Lambda}^{n}(f)+\tau (X(f)-{\displaystyle \sum _{k}{U}_{k}^{n+1}(f)}),$$ where τ is the update rate of the Lagrange multiplier, specified using

`'LMUpdateRate'`

.

[1] Boyd, Stephen, Neal Parikh, Eric
Chu, Borja Peleato, and Jonathan Eckstein. "Distributed Optimization and Statistical Learning
via the Alternating Direction Method of Multipliers." *Foundations and
Trends ^{®} in Machine Learning*. Vol 3, Number 1, 2011,
pp. 1–122.

[2] Dragomiretskiy, Konstantin, and
Dominique Zosso. "Variational Mode Decomposition." *IEEE ^{®} Transactions on Signal Processing*. Vol. 62, Number 3, 2014, pp.
531–534.

[3] Moody, George B., and Roger G.
Mark. "The impact of the MIT-BIH Arrhythmia Database." *IEEE
Engineering in Medicine and Biology Magazine*. Vol. 20, No. 3, May–June 2001, pp.
45–50.