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:

- My thesis document,
*“Online Empirical Mode Decomposition”*, L. Yip 2010
- My MATLAB code. Released under the Apache License 2.0, which permits any kind or reuse or modification provided you preserve the copyright notice and disclaimer. See Appendix B of the thesis document for usage instructions. Please tell me if you find it useful!

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.

*Related*

Fernando A. Marengo RodriguezThank you very much for this documentation. Perhaps it would be more useful if you upload a short tutorial for using your online EMD algorithm.

lwsPost authorFernando:

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.

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

Thanks

lwsDoaa:

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

– L.

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

elaheHello

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