My thesis (Online Empirical Mode Decomposition)

Because I always promised I was going to, I’m posting my work on a real-time (online) implementation of the Empirical Mode Decomposition. The original application was an extension of Chappell and Payne’s system for detecting gas emboli using Doppler ultrasound, but I believe the applications for an online EMD implementation are much wider.

For those not in the know, the Empirical Mode Decomposition (EMD) is an algorithm for signal processing in the time domain, as opposed to the Fourier Transform and Wavelet transforms, which are frequency-domain approaches. At the time I wrote this there was no decent implementation of the EMD for streaming data, so I tried to write one. I won’t say I was successful, but I like to think I took some steps in the right direction.

Without further ado:

The thesis document should be considered the documentation for the MATLAB code (that is, read them both.) The MATLAB code is heavily based on some prior work, in particular Rilling, Flandrin and Goncalves (2003), and Meeson (2003). See the thesis document for full references/acknowledgements.

7 thoughts on “My thesis (Online Empirical Mode Decomposition)

    1. lws Post author


      See Appendix B of the thesis document, “User Manual: Online EMD Program”.

      Note that the MATLAB code still has correctness and performance issues. The program is quite slow, and the extracted IMFs may include artifacts due to data windowing that would not be present in IMFs produced by a conventional, off-line EMD program.

      I believe this code is useful in that it demonstrates some ideas for implementing an online EMD, but it is not itself a “production grade” implementation. That said, it’s under the Apache 2.0 license, so feel free to improve on it. 🙂

      Glad you found it useful!

      – Lewis.

  1. Doaa

    The code is not working ??? is there any specific steps should be taken in order to make it work???


    1. lws


      Please specify how it is not working, and what steps you have already tried.

      – L.

  2. shailesh

    What are the steps to be implemented in corresct sequence in order to run this code?

  3. elahe

    i have this error( Error using IMF/UpdateExtrema (line 51)
    Bug: Number of maxima and minima differ by more than one.)in matlab when i have run the “IMF_test_suit.m” my data is atrial fibrillation that i get from physiobank


Leave a Reply

Your email address will not be published. Required fields are marked *