Empirical mode decomposition – Introduction


Empirical mode decomposition (EMD) is a data-driven decomposition method and was originally proposed by Huang et. al in 1998 [1]. Since that time the method has gained a lot of attention in the science community. EMD has been applied in a wide range of different fields, including geophysics, biomedicine, neuroscience, finance and many more.

The method is defined by an algorithm as follows:

  1. Identify all local extrema (both minima and maxima) in input signal s(t).
  2. If the number of extrema is less or equal 2 then s(t) is considered as a trend (r(t) := s(t) ) — finish with one component.
  3. Estimate top (env_max) and bottom(env_min) envelopes by interpolating respectively local maxima and local minima with natural cubic splines.
  4. Calculate local mean (mean of both envelopes) — m(t) = 0.5(env_{max} + env_{min}).
  5. Subtract the mean from the input signal h(t) = s(t) - m(t) .
  6. If h_j fulfills the stopping criteria, then it is considered an intrinsic mode function (IMF) (a component c_j(t) ) and algorithm starts again from step 1 for a signal s(t) := m(t). Otherwise, it starts with s(t) := h(t).

Empirical evidence is that the algorithm converges to finite number of IMFs, with which input signal can be reconstructed :

s(t) = \sum_n^N c_i (t) + r(t)

where N is the number of components.


Top (blue) and bottomo (red) envelopes of signal (green). Their average, described as carrier wave, is presented in dashed black.


Empirical mode decomposition on signal composed of three sine modes.

[1] N. E. Huang, Z. Shen, S. R. Long, M. C. Wu, H. H. Shih, Q. Zheng, N.-C. Yen, C. C. Tung, and H. H. Liu, “The empirical mode decomposition and the Hilbert spectrum for nonlinear and non-stationary time series analysis,” Proceedings of the Royal Society A: Mathematical, Physical and Engineering Sciences, vol. 454, pp. 903-995, 1998.


VMWare path to kernel issue


There is an issue with proper configuring of the VMWare on newer linux kernels. While running ‘vmware-config.tools.pl’, it may ask you for exact path to the kernel’s headers as its default path is empty. The problem is that even though you pass the correct path it still cannot find it. The query looks like this:

Searching for a valid kernel header path...
The path "" is not a valid path to the 3.8.0-23-generic kernel headers.
Would you like to change it? [yes]

The solution depends on what linux distro (and version) you are using. For Ubuntu I’ve used commands like (source: link):

cd /lib/modules/$(uname -r)/build/include/linux
sudo ln -s ../generated/utsrelease.h
sudo ln -s ../generated/autoconf.h
sudo ln -s ../generated/uapi/linux/version.h 

Whereas for Fedora apparently it is (source: link):

Firstly, do a uname -a to see if your kernel version (the number, and PAE/not PAE) matches the kernel-devel installed. If not, that is where the problem lies.

Do a YUM install for the kernel[.PAE] again to bring it up to the same version as the kernel-devel[.PAE].