pub fn vmd(
input: &[f64],
alpha: f64,
tau: f64,
K: usize,
DC: i32,
init: i32,
tol: f64,
) -> Result<(Array2<f64>, Array2<Complex<f64>>, Array2<f64>), VmdError>Expand description
§Description
u,u_hat,omega = VMD(input, alpha, tau, K, DC, init, tol)
Variational mode decomposition
Based on Python implementation by @vrcarfa
Original paper:
Dragomiretskiy, K. and Zosso, D. (2014) ‘Variational Mode Decomposition’,
IEEE Transactions on Signal Processing, 62(3), pp. 531–544. doi: 10.1109/TSP.2013.2288675.
§Input and Parameters:
input - the time domain signal (1D) to be decomposed
alpha - the balancing parameter of the data-fidelity constraint
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 of convergence criterion; typically around 1e-6
§Output:
u - the collection of decomposed modes
u_hat - spectra of the modes
omega - estimated mode center-frequencies