The function MVMD applies the Multivariate Variational Mode Decomposition (MVMD) algorithm  to multivariate or multichannel data sets. The method is an alternative to another popular algorithm named Multivariate Empirical Mode Decomposition (MEMD). We have verified this code through simulations involving synthetic and real world data sets containing 2-16 channels. However, there is no reason that it shouldn't work for data with more than 16 channels.
% Input and Parameters:
signal - input multivariate signal that needs to be decomposed
alpha - the parameter that defines the bandwidth of extracted modes (low value of alpha yields higher bandwidth)
tau - time-step of the dual ascent ( pick 0 for noise-slack )
K - the number of modes to be recovered
DC - true if the first mode is put and kept at DC (0-freq)
init - 0 = all omegas start at 0
1 = all omegas start uniformly distributed
2 = all omegas initialized randomly
tol - tolerance value for convergence of ADMM
u - the collection of decomposed modes
u_hat - spectra of the modes
omega - estimated mode center-frequencies
 N. Rehman, H. Aftab, Multivariate Variational Mode Decomposition, arXiv:1907.04509, 2019.
Naveed ur Rehman (2020). Multivariate Variational Mode Decomposition (MVMD) (https://www.mathworks.com/matlabcentral/fileexchange/72814-multivariate-variational-mode-decomposition-mvmd), MATLAB Central File Exchange. Retrieved .
Thanks for the positive feedback! Based on your suggestion, we have uploaded a faster version of the MVMD function.
Great work! fancy implementing a faster version using multicore parallel processing (i.e. parfor loops)?
Inspired by: Variational Mode Decomposition
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!