computes Empirical Mode Decomposition
[IMF,ORT,NB_ITERATIONS] = emd(X) [IMF,ORT,NB_ITERATIONS] = emd(X,...,'Option_name',Option_value,...) [IMF,ORT,NB_ITERATIONS] = emd(X,OPTS)
vector of stopping parameters [THRESHOLD,THRESHOLD2,TOLERANCE] if the input vector's length is less than 3, only the first parameters are set, the remaining ones taking default values. default: [0.05,0.5,0.05]
disable the default stopping criterion and do exactly <FIX> number of sifting iterations for each mode
disable the default stopping criterion and do <FIX_H> sifting iterations with |#zeros-#extrema|<=1 to stop [4]
selects the algorithm used for complex EMD ([3])
"algorithm 1"
"algorithm 2" (default)
number of directions in which envelopes are computed (default 4) rem: the actual number of directions (according to [3]) is 2*NDIRS
sampling times (line vector) (default: 1:length(x))
maximum number of sifting iterations for the computation of each mode (default: 2000)
maximum number of imfs extracted (default: Inf)
if equals to 1 shows sifting steps with pause if equals to 2 shows sifting steps without pause (movie style) rem: display is disabled when the input is complex
interpolation scheme: 'linear', 'cubic', 'pchip' or 'spline' (default) see interp1 documentation for details
masking signal used to improve the decomposition according to [5]
IMF = EMD(X) where X is a real vector computes the Empirical Mode Decomposition [1] of X, resulting in a matrix IMF containing 1 IMF per row, the/ last one being the residue. The default stopping criterion is the one proposed in [2]:
at each point, mean_amplitude < THRESHOLD2*envelope_amplitude & mean of boolean array {(mean_amplitude)/(envelope_amplitude) > THRESHOLD} < TOLERANCE & |#zeros-#extrema|<=1
where mean_amplitude = abs(envelope_max+envelope_min)/2 and envelope_amplitude = abs(envelope_max-envelope_min)/2
IMF = EMD(X) where X is a complex vector computes Bivariate Empirical Mode Decomposition [3] of X, resulting in a matrix IMF containing 1 IMF per row, the last one being the residue. The default stopping criterion is similar to the one proposed in [2]:
at each point, mean_amplitude < THRESHOLD2*envelope_amplitude & mean of boolean array {(mean_amplitude)/(envelope_amplitude) > THRESHOLD} < TOLERANCE
where mean_amplitude and envelope_amplitude have definitions similar to the real case
IMF = EMD(X,...,'Option_name',Option_value,...) sets options Option_name to the specified Option_value (see Options)
IMF = EMD(X,OPTS) is equivalent to the above syntax provided OPTS is a struct object with field names corresponding to option names and field values being the associated values
[IMF,ORT,NB_ITERATIONS] = EMD(...) returns an index of orthogonality
and the number of iterations to extract each mode in NB_ITERATIONS
[1] N. E. Huang et al., "The empirical mode decomposition and the
Hilbert spectrum for non-linear and non stationary time series analysis",
Proc. Royal Soc. London A, Vol. 454, pp. 903-995, 1998
[2] G. Rilling, P. Flandrin and P. Gonzalves
"On Empirical Mode Decomposition and its algorithms",
IEEE-EURASIP Workshop on Nonlinear Signal and Image Processing
NSIP-03, Grado (I), June 2003
[3] G. Rilling, P. Flandrin, P. Gonzalves and J. M. Lilly.,
"Bivariate Empirical Mode Decomposition",
Signal Processing Letters (submitted)
[4] N. E. Huang et al., "A confidence limit for the Empirical Mode
Decomposition and Hilbert spectral analysis",
Proc. Royal Soc. London A, Vol. 459, pp. 2317-2345, 2003
[5] R. Deering and J. F. Kaiser, "The use of a masking signal to improve
empirical mode decomposition", ICASSP 2005