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.

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

    1. lws Post author

      Fernando:

      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.

      Reply
  1. Doaa

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

    Thanks

    Reply
    1. lws

      Doaa:

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

      – L.

      Reply
  2. shailesh

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

    Reply

Leave a Reply