1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
Examples
********

Some examples can be found in PyEMD/example directory.

EMD
===

Quick start
-----------
In most cases default settings are enough. Simply
import :py:class:`EMD` and pass your signal to `emd` method.

.. code:: python

    from PyEMD import EMD

    s = np.random.random(100)
    emd = EMD()
    IMFs = emd.emd(s)

Something more
``````````````
Here is a complete script on how to create and plot results.

.. code:: python

    from PyEMD import EMD
    import numpy  as np
    import pylab as plt

    # Define signal
    t = np.linspace(0, 1, 200)
    s = np.cos(11*2*np.pi*t*t) + 6*t*t

    # Execute EMD on signal
    IMF = EMD().emd(s,t)
    N = IMF.shape[0]+1

    # Plot results
    plt.subplot(N,1,1)
    plt.plot(t, s, 'r')
    plt.title("Input signal: $S(t)=cos(22\pi t^2) + 6t^2$")
    plt.xlabel("Time [s]")

    for n, imf in enumerate(IMF):
        plt.subplot(N,1,n+2)
        plt.plot(t, imf, 'g')
        plt.title("IMF "+str(n+1))
        plt.xlabel("Time [s]")

    plt.tight_layout()
    plt.savefig('simple_example')
    plt.show()


The Figure below was produced with input:

:math:`S(t) = cos(22 \pi t^2) + 6t^2` 

|simpleExample|

EEMD
====

Simplest case of using Ensemble EMD (EEMD) is by importing `EEMD` and passing your signal to `eemd` method.

.. code:: python

    from PyEMD import EEMD
    import numpy as np
    import pylab as plt

    # Define signal
    t = np.linspace(0, 1, 200)

    sin = lambda x,p: np.sin(2*np.pi*x*t+p)
    S = 3*sin(18,0.2)*(t-0.2)**2
    S += 5*sin(11,2.7)
    S += 3*sin(14,1.6)
    S += 1*np.sin(4*2*np.pi*(t-0.8)**2)
    S += t**2.1 -t

    # Assign EEMD to `eemd` variable 
    eemd = EEMD()

    # Say we want detect extrema using parabolic method
    emd = eemd.EMD
    emd.extrema_detection="parabol"

    # Execute EEMD on S
    eIMFs = eemd.eemd(S, t)
    nIMFs = eIMFs.shape[0]

    # Plot results
    plt.figure(figsize=(12,9))
    plt.subplot(nIMFs+1, 1, 1)
    plt.plot(t, S, 'r')

    for n in range(nIMFs):
        plt.subplot(nIMFs+1, 1, n+2)
        plt.plot(t, eIMFs[n], 'g')
        plt.ylabel("eIMF %i" %(n+1))
        plt.locator_params(axis='y', nbins=5)

    plt.xlabel("Time [s]")
    plt.tight_layout()
    plt.savefig('eemd_example', dpi=120)
    plt.show()

|eemdExample|


.. |simpleExample| image:: https://github.com/laszukdawid/PyEMD/raw/master/example/simple_example.png
    :align: middle
    :alt: Oh, the quality. Please click on the image for better resolution.
    :target: https://github.com/laszukdawid/PyEMD/raw/master/example/simple_example.png
 
.. |eemdExample| image:: https://github.com/laszukdawid/PyEMD/raw/master/example/eemd_example.png?raw=true
    :width: 720px
    :height: 540px