SlideShare une entreprise Scribd logo
1  sur  18
Télécharger pour lire hors ligne
Institut Superieur
 d’Informatique
  de Modelisation
   et de leurs Applications
complexe des cezeaux
BP 125 - 63173 aubiere cedex




                      Rapport de Projet 2`me ann´e
                                         e
                                                e



  Implantation de la methode EMD
    en C avec interface Matlab




Pr´sent´ par : Tarik Boustane
  e    e
                                              Projet de 100 heures
           et Gw´nol´ Quellec
                  e e
                                              de Novembre 2003 ` Mars 2004
                                                                a
Responsable : Pierre Chainais
Remerciements
   On tient ` remercier particuli`rement notre maˆ
              a                   e                ıtre de projet, Pierre CHAINAIS,
enseignant-chercheur ` l’ISIMA de Clermont-Ferrand, pour ses conseils avis´s et ses en-
                     a                                                      e
couragements, sa sympathie, qui nous ont beaucoup aid´s dans la r´alisation et la r´ussite
                                                     e           e                 e
de ce projet.
R´sum´
 e   e
    En 1998, l’Empirical Mode Decomposition (EMD), une nouvelle m´thode d’ana-
                                                                           e
lyse du signal a ´t´ propos´e par N.E. Huang. Cette m´thode, qui est purement algo-
                   ee         e                          e
rithmique, a d´j` ´t´ impl´ment´e sous Matlab par l’´quipe de P. Flandrin (ENS Lyon).
                 eaee       e     e                   e
Mais le nombre d’op´rations pour d´composer un signal par EMD croˆ rapidement avec
                      e               e                               ıt
sa taille, ce qui implique de longs temps de calcul sous Matlab.
    Le travail effectu´ dans ce projet a consist´ ` implanter l’algorithme en langage C
                       e                        e a
pour r´soudre ce probl`me. Il a fallu pour cela coder une m´thode d’interpolation, la
       e                 e                                   e
plus adapt´e ´tant l’interpolation cubique par des splines, et d´finir des param`tres et
             e e                                                 e              e
crit`res d’arrˆt. On a dˆ ´galement r´soudre des probl`mes caus´s par d’importants effets
    e          e         ue           e               e        e
de bords. Pour rendre l’utilisation du programme plus pratique, on a r´alis´ une inter-
                                                                         e e
face avec Matlab. Finalement, on a analys´ quelques exemples susceptibles d’ouvrir des
                                            e
perspectives pour la m´thode.
                         e

Mots cl´s : Empirical Mode Decomposition, temps de calcul, interpolation, interface avec
       e
Matlab


Abstract
    In 1998, the Empirical Mode Decomposition (EMD), a new signal analysis tech-
nique has been pioneered by N.E. Huang. This method, only defined by an algorithm, has
already been implemented into Matlab by P. Flandrin’s team (ENS Lyon). Anyway, the
number of calculations to decompose a signal by the EMD quickly increases with its size,
which involves a considerable computation time using Matlab.
    The work we carried out in this project consisted in coding the algorithm in C lan-
guage to solve this problem. In that purpose, we had to code an interpolation method,
the most suited being the cubic spline interpolation, and define parameters and stopping
criteria. We also had to solve problems caused by considerable side effects. To make the
program more user-friendly, we built an interface with Matlab. Finally, we analysed
examples likely to lead to new prospects for the technique.

Keywords : Empirical Mode Decomposition, computation time, interpolation, interface
with Matlab
Table des mati`res
              e

   Remerciements

   R´sum´
    e   e

   Table des mati`res
                 e

   Table des figures

   Introduction                                                                                                          6

1 Pr´sentation du probl`me
     e                    e                                                                                              7
  1.1 Int´rˆts de la m´thode EMD . . . . . . . . . . . . . . . . . . . . . . . . . .
         ee           e                                                                                                  7
  1.2 Travail demand´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
                      e                                                                                                  7
  1.3 Algorithme de principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                   7

2 M´thodes utilis´es
     e             e                                                                                                     9
  2.1 Interpolation cubique par des splines . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  2.2 Choix des valeurs ` tabuler pour l’interpolation
                         a                                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
  2.3 Pr´cision des calculs . . . . . . . . . . . . . . .
        e                                                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
  2.4 Interface C/Matlab . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   13

3 R´sultats et discussion
    e                                                                                                                   14
  3.1 Analyse d’un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                  14
  3.2 Temps de calcul du programme . . . . . . . . . . . . . . . . . . . . . . . .                                      15
  3.3 Probl`me non r´solu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
           e         e                                                                                                  15

   Conclusion                                                                                                           17

   R´f´rences bibliographiques
    ee
Table des figures
 1   Enveloppes sup´rieures et inf´rieures d’un signal . .
                    e             e                           .   .   .   .   .   .   .   .   .   .   .   .   .   11
 2   Choix des valeurs ` tabuler pour l’interpolation . .
                       a                                      .   .   .   .   .   .   .   .   .   .   .   .   .   11
 3   Influence des valeurs tabul´es pour l’interpolation .
                               e                              .   .   .   .   .   .   .   .   .   .   .   .   .   12
 4   Somme d’un signal triangulaire et d’une sinuso¨  ıde .   .   .   .   .   .   .   .   .   .   .   .   .   .   14
 5   Temps de calcul en fonction de la taille de l’instance   .   .   .   .   .   .   .   .   .   .   .   .   .   15
 6   Probl`me des termes parasites . . . . . . . . . . . .
          e                                                   .   .   .   .   .   .   .   .   .   .   .   .   .   16
Introduction
    Dans le cadre de notre deuxi`me d’´tudes en sp´cialit´ calcul scientifique et mod´lisa-
                                e     e            e     e                           e
tion ` l’ISIMA, nous avons r´alis´ un projet de cent heures r´parties sur cinq mois, entre
     a                       e e                             e
novembre 2003 et mars 2004.

    Il y a six ans, une nouvelle m´thode d’analyse du signal a ´t´ propos´e par N.E.
                                    e                                 ee     e
Huang. Cette m´thode a pour particularit´ de n’ˆtre d´finie que par un algorithme et,
                 e                           e      e       e
bien que sans fondements th´oriques, elle s’av`re tr`s efficace. Des recherches sont ef-
                               e                  e      e
fectu´es pour tenter de justifier la m´thode. Afin de comprendre pourquoi elle fonctionne
      e                               e
aussi bien, on a besoin d’outils pour l’´tudier, d’o` l’int´rˆt de la coder.
                                        e           u      ee

    Cet algorithme a d´j` ´t´ impl´ment´ sous Matlab. Il est n´anmoins int´ressant de le
                      eaee        e     e                     e           e
programmer en C, afin de pouvoir ´tudier des signaux de grande taille en minimisant le
                                    e
temps de calcul. Ainsi le but de notre projet a ´t´ d’impl´menter la m´thode en C avec
                                                ee        e           e
interface Matlab.

   Dans un premier temps, nous allons pr´senter notre ´tude en d´crivant le principe de
                                           e           e          e
l’EMD. Puis nous d´taillerons les m´thodes utilis´es dans notre programme. Enfin, nous
                     e               e            e
analyserons le r´sultat de l’ex´cution de notre programme sur un exemple et discuterons
                e              e
de ses performances.




                                            6
1     Pr´sentation du probl`me
        e                  e
1.1    Int´rˆts de la m´thode EMD
          e e          e
    La m´thode EMD a pour objectif de d´composer des signaux en diff´rents modes ayant
          e                                e                          e
une bonne signification physique. Cela veut dire notamment que la connaissance de ces
modes permet de comprendre de mani`re intuitive le contenu fr´quentiel du signal.
                                        e                        e
    Les m´thodes classiques d´composent un signal sur une base de fonctions propre ` la
           e                   e                                                      a
m´thode, qui sont donc ind´pendantes du signal ´tudi´. Ainsi, par exemple, la transform´e
  e                          e                    e  e                                  e
de Fourier d´compose un signal en une somme de sinuso¨
              e                                          ıdes. La m´thode des ondelettes,
                                                                    e
quant ` elle, utilise pour fonctions de base les ”ondelettes”, qui sont des fonctions lo-
       a
calis´es : la signification physique des diff´rents modes est donc d´j` meilleure.
     e                                      e                      ea
    La m´thode EMD, au contraire, a une approche adaptative : pour chaque signal ´tudi´,
          e                                                                        e    e
une nouvelle base de fonctions est construite. Ainsi ces modes d´criront mieux le signal.
                                                                  e
Ces modes, appel´s IMFs (Intrinsic Mode Functions), ont pour seule caract´ristique d’ˆtre
                   e                                                       e          e
de moyenne nulle.

1.2    Travail demand´
                     e
    L’algorithme a d´j` ´t´ impl´ment´ sous Matlab par l’´quipe de P. Flandrin (ENS
                        ea ee     e     e                    e
Lyon). Cependant, le nombre d’op´rations ` r´aliser pour d´composer un signal par la
                                     e       a e               e
m´thode EMD croˆ rapidement avec la taille des signaux. Or l’inconv´nient de la pro-
  e                  ıt                                                e
grammation sous Matlab, qui utilise un langage de haut niveau, est que les temps de
calculs sont relativement importants.
    Pour r´soudre ce probl`me, il ´tait donc int´ressant de programmer la m´thode en C.
           e                 e     e            e                          e
Cependant, il est commode de pouvoir appeler le programme depuis l’invite de commande
Matlab. En effet, ceci permet notamment d’utiliser l’interface graphique de Matlab pour
visualiser les sorties du programme.
    Il nous a donc ´t´ demand´ d’´crire un programme en C, r´alisant la d´composition
                     ee         e e                              e         e
d’un signal par la m´thode EMD, qui puisse ˆtre compil´ et ex´cut´ depuis l’invite de
                        e                       e          e       e e
commande Matlab, en r´alisant une interface.
                           e

1.3    Algorithme de principe
    L’EMD, tel que l’explique l’article On empirical mode decomposition and its algorithms
([1]), consid`re les oscillations dans un signal au niveau local. Sur un intervalle s´parant
             e                                                                        e
deux extrema cons´cutifs, on s´pare le signal en un terme de haute fr´quence et un terme
                    e            e                                       e
de basse fr´quence. Dans un premier temps, on ´limine celui de basse fr´quence (dans
            e                                        e                         e
tout le signal) pour isoler celui de haute fr´quence. On a alors extrait un premier mode.
                                             e
Ensuite, on it`re sur le r´sidu.
               e           e
    On assimile le terme de basse fr´quence ` la moyenne entre les enveloppes inf´rieure
                                       e       a                                        e
et sup´rieure du signal. Ces enveloppes sont calcul´es par interpolation entre les minima
       e                                               e
(pour l’enveloppe inf´rieure) ou les maxima (pour l’enveloppe sup´rieure) du signal. En
                       e                                               e
pratique, ce n’est pas suffisant : pour isoler le terme de haute fr´quence, il faut ´liminer
                                                                     e                e
la moyenne des enveloppes du signal courant jusqu’` ce que celle-ci devienne nulle. On
                                                         a
r´p`te finalement le proc´d´ sur le signal, tel qu’il ´tait avant la phase d’´limination, priv´
 e e                       e e                       e                      e                e
du terme de haute fr´quence.
                       e
    On consid`re que l’on a extrait tous les modes du signal lorsqu’il compte moins de
               e


                                              7
trois extrema (≡ moins d’une p´riode).
                              e

   Soit y=f(x) le signal discr´tis´ ` analyser, x et y sont deux vecteurs de taille n
                              e e a
param´tr´s par t.
      e e

lecture des entr´es (x et y) depuis Matlab
                 e
a=amplitude de y
tant que y contient au moins une p´riode (ie. au moins trois extrema) faire
                                        e
    ∀ t, z(t)=y(t)
    ∀ t, m(t)=y(t)
    tant que amplitude de m ≥ ε×a faire
        recherche des extrema de z
            → (xmax ,ymax ,xmin ,ymin )=min max(x,z)
        interpolation des maximums de z
            → emax =interpolation(xmax ,ymax ,x)
        interpolation des minimums de z
            → emin =interpolation(xmin ,ymin ,x)
        calcul de la moyenne des enveloppes
            → ∀ t, m(t)=(emax (t)+emin (t))/2
        mise ` jour de z
             a
            → ∀ t, z(t)=z(t)-m(t)
    fait
    sauvegarde de z dans la liste des modes
    ∀ t, y(t)=y(t)-z(t)
fait
sauvegarde de y dans la liste des modes (en tant que r´sidu)
                                                       e
´criture des sorties (la matrice contenant les modes) sous Matlab
e

   • min max(x,z) doit retourner les abscisses et les ordonn´es des extrema du signal
                                                                    e
     z=f(x)
   • interpolation(xtabul´s ,ytabul´s ,x) doit retourner les valeurs de la fonction interpolant
                         e         e
     les points tabul´s (xtabul´s ,ytabul´s ) pour les abscisses x
                     e           e        e




    On a vu que pour extraire le terme de haute fr´quence d’un signal, il fallait rechercher
                                                   e
les extrema d’un signal et interpoler entre ces points. Nous pr´ciserons par la suite com-
                                                               e
ment on a impl´ment´ les fonctions min max et interpolation. Nous discuterons ´galement
               e     e                                                            e
de l’influence et du choix du param`tre ε qui contrˆle l’´limination. Nous verrons aussi
                                     e               o    e
comment g´rer les entr´es-sorties avec Matlab.
           e           e




                                              8
2     M´thodes utilis´es
       e             e
2.1     Interpolation cubique par des splines
    On utilise la m´thode d’interpolation par des splines car on a besoin d’avoir des courbes
                    e
lisses afin de ne pas ajouter des irr´gularit´s dans le signal.
                                          e            e
    Soit x = [x1 , x2 , ..., xn ] et y = [y1 , y2 , ..., yn ] les abscisses et les ordonn´es des points `
                                                                                         e              a
interpoler. Le principe de cette m´thode (expliqu´ dans Cubic spline interpolation [2]) est
                                        e                       e
de calculer une fonction interpolante S :

                                        s1 (x) si x1 ≤ x ≤ x2
                                       
                                       
                                           s2 (x) si x2 ≤ x ≤ x3
                                       
                                       
                              S(x) =
                                        ...
                                       
                                       
                                           sn−1 (x) si xn−1 ≤ x ≤ xn
                                       


o` les si sont des polynˆmes de degr´ 3. Pour que S soit une spline, il faut que S, S’ et
 u                      o               e
S” soient continues sur l’intervalle [x1 ,xn ]. De plus, on a S(xi )=yi ∀ i.
   On obtient que pour x [xi , xi+1 [ : S(x) = Ayi + Byi+1 + Cyi + Dyi+1 avec :
                               xi+1 − x                              x − xi
                         A=                         B =1−A=
                               xi+1 − xi                            xi+1 − xi
                   1                                 1
              C = (A3 − A)(xi+1 − xi )2          D = (B 3 − B)(xi+1 − xi )2
                   6                                 6
les yi ´tant calcul´s par la r´solution du syst`me :
       e           e          e                e
xj − xj−1        xj+1 − xj−1      xj+1 − xj        yj+1 − yj   yj − yj−1
          yj−1 +             yj +           yj+1 =           −           , j               {2, ..., n−1}
    6                 3               6            xj+1 − xj xj − xj−1

(d’apr`s Numerical recipes in C [3]). Ce syst`me est tridiagonal, ce qui est pratique car
       e                                       e
il existe des algorithmes pour r´soudre de tels syst`mes en O(n).
                                e                   e
    Cependant, on a n-2 ´quations pour n inconnues, il faut donc en fixer deux. On a fix´
                          e                                                             e
y1 et yn ` 0 (on a alors ce qu’on appelle des splines naturelles).
          a
    On a repr´sent´ le r´sultat de l’interpolation des minima, et celle des maxima, d’un
               e     e   e
signal par cette m´thode (voir Fig. 1).
                    e

2.2     Choix des valeurs ` tabuler pour l’interpolation
                          a
    La fonction interpolation prend en entr´e la liste des minima (ou des maxima) d’un
                                              e
signal ainsi que celle des abscisses correspondantes. Comme on l’a vu pr´cedemment,
                                                                                e
la fonction d´termine, entre deux points cons´cutifs, un polynˆme afin de construire la
                e                                e                o
fonction interpolante.
    Le probl`me qui se pose est que le premier et le dernier ´chantillon du signal ne sont
              e                                                e
pas, en g´n´ral, des minima et des maxima. Il faut n´anmoins fournir ` interpolation une
          e e                                         e                 a
valeur en ces points pour d´terminer le premier et le dernier polynˆme de la fonction
                               e                                        o
interpolante.
    Soit y le signal de longueur n dont on doit d´terminer les enveloppes. Soit y max (resp.
                                                 e
y min) le vecteur de longueur n max (resp. n min) qui contient l’ordonn´e des points `
                                                                             e             a
interpoler pour trouver l’enveloppe sup´rieure (resp. inf´rieure). y max contient donc les
                                         e                e
maxima de y (de y max2 ` y maxn max−1 ) (idem pour y min). Il reste ` d´terminer
                              a                                                a e


                                                   9
y max1 , y maxn   max ,   y min1 et y minn   min   :

   Premi`re m´thode : Choisir simplement (voir Fig. 2 - premi`re m´thode) :
         e     e                                             e    e
   y max1 =y max2 , y maxn max =y maxn max−1 ,
   y min1 =y min2 et y minn min =y minn min−1 .

    Cette technique provoque une erreur importante aux extr´mit´s du signal, mais cette
                                                               e e
erreur ne se propage pas sur le signal tout entier (voir Fig. 3 - premi`re m´thode).
                                                                       e    e

   Deuxi`me m´thode : Consid´rer la pente du signal y en 1 et en n (voir Fig. 2 -
           e        e                e
deuxi`me m´thode) . Ainsi en 1, par exemple :
      e      e
   si le signal est croissant, on choisit y min1 =y1 et y max1 =y max2 .
   si le signal est d´croissant, on choisit y max1 =y1 et y min1 =y min2 .
                      e

   Cette technique donne un r´sultat plus pr´cis localement, mais provoque une erreur
                                e              e
qui se propage dans tout le signal. Ceci implique l’apparition de termes parasites dans la
d´composition (voir Fig. 3 - deuxi`me m´thode).
 e                                  e     e
Remarque : on aurait eu le mˆme probl`me (en pire) si on avait pris y min1 =y1 , y max1 =y1 ,
                            e         e
y minn min =yn et y maxn max =yn .

    Compromis : Au d´but du signal y, par exemple, si y min2 ≤ y1 ≤ y max2 , on choisit
                        e
la premi`re m´thode, sinon, on choisit la deuxi`me. En effet, dans ce cas, on consid`re
        e      e                                e                                    e
que la tendance g´n´rale du signal est constante au d´but du signal. On ´vite ainsi de
                  e e                                  e                  e
perturber l’interpolation. Par contre, dans le cas contraire, on ne peut pas toujours le
consid´rer. On minimise ainsi les deux types de d´fauts (voir Fig. 3 - compromis).
      e                                           e

2.3    Pr´cision des calculs
         e
    Lorsque l’on a commenc´ ` impl´menter l’algorithme, on a cod´ nos donn´es en r´els
                             ea      e                              e           e      e
simple pr´cision. L’objectif ´tait de rendre les calculs plus rapides et on pensait que la
          e                  e
pr´cision serait suffisante.
  e
    Cependant, on s’est rendu compte que le programme ne convergeait pas toujours.
En effet, dans la boucle interne, on doit rendre l’amplitude crˆte ` crˆte du vecteur m
                                                                 e a e
(moyenne des enveloppes inf´rieures et sup´rieures du signal courant) inf´rieure ` une
                              e              e                                e      a
constante (ε×amplitude(signal d’entr´e)). Or, pour que le programme converge, il fallait
                                       e
augmenter cette constante.
    Du coup, on a reconsid´r´ l’hypoth`se selon laquelle le codage des donn´es ´tait suf-
                            ee           e                                     e e
fisamment pr´cis. On s’est rendu compte qu’en travaillant avec des r´els double pr´cision,
              e                                                       e            e
on n’avait plus de probl`mes de convergence.
                        e
    Auparavant, la d´composition de certains signaux simples (i.e. compos´s de quelques
                     e                                                      e
milliers de points avec relativement peu d’oscillations) divergeait pour ε = 10−3 . Apr`se
                                                                 −8
cette modification, on a refait les mˆmes tests avec un ε = 10 : tous les tests ont ´t´
                                      e                                                 ee
positifs.
    Ce probl`me est probablement dˆ au fait que, lors de l’interpolation, on inverse un
             e                        u
syst`me lin´aire. En effet, si la matrice du syst`me est mal conditionn´e, une l´g`re
    e       e                                      e                        e         e e
impr´cision sur ses valeurs peut conduire ` des r´sultats tout ` fait diff´rents de ceux
     e                                      a       e             a         e
attendus.



                                               10
Fig. 1 – Enveloppes sup´rieures et inf´rieures d’un signal
                           e              e
On a interpol´ entre les minima (resp. maxima) du signal y=sinc(x),
              e
ce qui constitue l’enveloppe inf´rieure (resp. sup´rieure) de ce signal.
                                e                 e
L’enveloppe sup´rieure pr´sente plus d’oscillations que ce qu’on aurait
                e         e
pu esp´rer.
      e




     Fig. 2 – Choix des valeurs ` tabuler pour l’interpolation
                                a




                                  11
Fig. 3 – Influence des valeurs tabul´es pour l’interpolation
                                       e
Concernant la premi`re fa¸on de choisir les valeurs ` tabuler, si le pre-
                       e     c                        a
mier point du signal est sup´rieur au premier maximum ou inf´rieur
                               e                                   e
au premier minimum, un gros d´faut apparaˆ Concernant la deuxi`me,
                                 e            ıt.                    e
c’est le contraire. Le probl`me est le mˆme ` la fin du signal. En choisis-
                            e           e   a
sant quelle m´thode appliquer en fonction de ce crit`re, les d´fauts sont
               e                                     e         e
moins importants.




                                   12
2.4    Interface C/Matlab
    Le programme doit lire deux vecteurs (x et y) au d´but du programme et ´crire une
                                                          e                        e
matrice (imfs, qui contient les modes extraits du signal) ` la fin.
                                                            a
    Pour cela, la fonction principale doit avoir le prototype suivant :
       void mexFunction(int nlhs,mxArray *plhs[ ],int nrhs,const mxArray *prhs[ ])
    • nlhs : nombre d’arguments en sortie
    • plhs : liste de pointeurs vers les matrices Matlab en sortie
    • nrhs : nombre d’arguments en entr´e  e
    • prhs : liste de pointeurs vers les matrices Matlab en entr´e e
Pour lire les donn´es des matrices en entr´e, on utilise les fonctions suivantes :
                     e                      e
    • mxGetM(prhs[i]) : lecture du nombre de lignes de la i`me matrice
                                                                e

    • mxGetN(prhs[i]) : lecture du nombre de colonnes de la i`me matrice
                                                                  e

    • mxGetPr(prhs[i]) : lecture du pointeur vers les donn´es e
Pour ´crire les donn´es des matrices en sortie, on utilise les fonctions suivantes :
      e                e
    • plhs[i]=mxCreateDoubleMatrix(m,n,mxREAL) : allocation d’une zone m´moire pour
                                                                                e
                 `me
                 e
       cr´er la i
         e           matrice Matlab (de taille m × n)
    • mxGetPr(plhs[i]) : r´cup´ration depuis le programme d’un pointeur vers cette zone
                            e   e
       m´moire, pour y ´crire les donn´es
         e               e              e
Le programme peut alors ˆtre compil´ depuis l’invite de commande Matlab
                            e           e
        mex emd.c
et y ˆtre appel´ comme une fonction Matlab.
     e            e




   Grˆce ` l’utilisation des splines pour l’interpolation, on esp`re bien approximer le terme
      a a                                                        e
de basse fr´quence du signal, que l’on veut ´liminer. Grˆce ` une m´thode heuristique de
           e                                   e            a a         e
choix des valeurs ` tabuler pour l’interpolation, on esp`re diminuer efficacement les effets
                   a                                      e
de bord. Nous verrons dans quelle mesure l’extraction des termes est pr´cise. En outre, on
                                                                           e
verra quelles sont les performances du programme en terme de temps de calcul, compte
tenu de la pr´cision des calculs.
             e




                                             13
3     R´sultats et discussion
       e
3.1    Analyse d’un exemple
    La caract´ristique de la m´thode EMD est de d´composer un signal en des modes
              e                 e                       e
bien adapt´s au signal. Ainsi la d´composition d’un signal triangulaire donne un seul
            e                       e
terme : lui-mˆme. En effet, c’est trivial : d`s la premi`re it´ration de la boucle interne du
              e                             e           e    e
programme, les enveloppes sup´rieures et inf´rieures du signal sont constantes et oppos´es,
                               e               e                                         e
ce qui implique que la moyenne est nulle. Donc on extrait le triangle, ainsi le reste est
nul et le programme s’arrˆte. Pour que ¸` ne soit plus trivial, on cr´e une perturbation
                           e              ca                            e
en ajoutant une sinuso¨ ıde.
    On voit (Fig. 4, ωcosinus = 15ω0 ) que, si la fr´quence de la sinuso¨ est suffisamment
                                                    e                   ıde
diff´rente de celle du triangle, la d´composition de ce signal donne ` peu pr`s la mˆme
    e                               e                                   a        e      e
sinuso¨ et le mˆme triangle. Les modes sont donc biens adapt´s au signal.
      ıde         e                                                 e
    Cet exemple nous montre ´galement (Fig. 4, ωcosinus = 3ω0 ) que l’on peut extraire
                                e
le fondamental d’un signal. En effet, la d´composition en s´ries de Fourier d’un signal
                                             e                  e
triangulaire est de la forme :
                                           ∞
                                               cos((2k + 1)ω0 t)
                             f (t) = C ×
                                           k=0    (2k + 1)2

Comme l’amplitude des harmoniques diminue en 1/n2 pour un signal triangulaire, l’EMD
ne voit pas les fr´quences ωi > ω0 s´par´ment.
                  e                 e e
    Or, en ajoutant suffisamment d’´nergie ` la premi`re harmonique (une sinuso¨ de
                                     e      a         e                           ıde
fr´quence 3ω0 ), on force l’EMD ` ne pas voir un seul mode dans le signal, mais deux :
  e                              a
un premier mode qui contient la sinuso¨ et les harmoniques du triangle, un second qui
                                        ıde
contient le fondamental du triangle. Il serait donc envisageable d’utiliser l’EMD pour
d´composer it´rativement un signal en s´rie de Fourier, grˆce ` un proc´d´ similaire.
  e            e                         e                a a          e e




               Fig. 4 – Somme d’un signal triangulaire et d’une sinuso¨
                                                                      ıde
           La sinuso¨ a, dans le premier cas, la fr´quence du 7`me harmonique du
                     ıde                           e           e

           triangle, on r´cup`re alors pratiquement, apr`s EMD, les deux signaux
                         e   e                          e
           somm´s. Dans le deuxi`me cas, la fr´quence de la sinuso¨ est celle du
                 e                 e            e                  ıde
           premier harmonique du triangle, ce n’est alors plus le cas : le contenu
           fr´quentiel des deux signaux somm´s n’est plus s´parable.
             e                                e            e



                                               14
3.2    Temps de calcul du programme
    On a mesur´ les temps de calcul du programme, sur plusieurs signaux, en faisant varier
                  e
la taille de l’instance et le param`tre ε de contrˆle de la boucle interne. On a compar´ ces
                                   e              o                                    e
temps de calcul avec ceux du programme Matlab de Flandrin. (voir Fig. 5)
    De mani`re g´n´rale, on remarque que le rapport entre les temps de calcul du pro-
               e    e e
gramme Matlab et ceux du programme C augmente avec la taille de l’instance. Par contre,
le param`tre ε a apparemment peu d’influence sur cette augmentation.
           e




             Fig. 5 – Temps de calcul en fonction de la taille de l’instance
           Comparaison des dur´es d’extraction des trois premiers modes du si-
                                e
           gnal ”y=cos(x)+cos(3x)+cos(5x)” avec un nombre de points variant de
           10.000 ` 100.000 points. Mesures effectu´es sur un PC avec processeur
                  a                               e
           AMD Athlon 1,47GHz



3.3    Probl`me non r´solu
            e        e
    Lorsque l’on fait la somme de sinuso¨  ıdes suffisamment s´par´es fr´quentiellement,
                                                                e e       e
on devrait extraire ses diff´rentes sinuso¨
                            e             ıdes plus un reste. Cependant, quelque soit la
pr´cision de l’´limination (i.e. quelque soit la param`tre ε), on peut obtenir des ter-
  e            e                                        e
mes suppl´mentaires (voir Fig. 6). Cependant leur ´nergie est n´gligeable devant les
           e                                            e            e
autres termes quand ε est suffisamment petit. Ceci met en ´vidence que lors de la phase
                                                             e
d’´limination, on introduit des perturbations. En effet, plus on ´limine (≡ plus ε est petit)
  e                                                             e
plus, en g´n´ral, le nombre de modes extraits augmente.
          e e




                                            15
Fig. 6 – Probl`me des termes parasites
                            e
Dans cet exemple (y=cos(x)+cos(3x)/3+cos(5x)), on voit que le nombre
de termes suppl´mentaires augmente quand ε diminue (ce n’est pas tou-
                e
jours le cas). On voit cependant qu’il faut qu’ε soit suffisamment petit
pour d´tecter toutes les oscillations.
       e




                                 16
Conclusion
    Les principaux objectifs fix´s ont ´t´ atteints : avoir un programme rapide avec une
                                e       ee
interface Matlab, bien que certaines am´liorations soient envisageables. Les probl`mes
                                           e                                           e
rencontr´s ont d’abord ´t´ d’ordre communicationnel. Nous avions en effet des difficult´s
          e              ee                                                              e
a e
` pr´senter, ` chaque rendez-vous avec notre responsable de projet, le travail effectu´. Les
             a                                                                        e
consignes et conseils de ce dernier nous ont cependant permis, en partie, de les r´soudre.
                                                                                   e
Ils ont ensuite ´t´ d’ordre technique : nous avions un programme qui ne convergeait pas.
                ee
Nous avons r´solu le probl`me en augmentant la pr´cision des calculs. De plus, La m´thode
              e            e                       e                                 e
EMD est tr`s sensible aux effets de bord (au fait que les signaux ´tudi´s ne sont pas infi-
            e                                                      e    e
nis). Grˆce ` un choix des valeurs ` tabuler pour l’interpolation, nous les avons att´nu´s.
         a a                        a                                                 e e
Les nombreuses explications fournies par notre responsable de projet sur l’analyse des
signaux nous ont permis d’augmenter nos connaissances et notre compr´hension dans ce
                                                                          e
domaine.

   Le projet laisse des perspectives d’exploitation. En effet, par un proc´d´ qu’il reste `
                                                                         e e             a
d´finir, le programme pourrait ˆtre utilis´ pour d´composer, algorithmiquement, un signal
 e                             e         e       e
en s´ries de Fourier.
    e




                                            17
R´f´rences bibliographiques
 ee
  [1] RILLING Gabriel, FLANDRIN Patrick, GONCALVES Paulo, On empirical mode
      decomposition and its algorithms, Juin 2003
      (http ://perso.ens-lyon.fr/patrick.flandrin/NSIP03.pdf )

  [2] MCKINLEY Sky, LEVINE Megan, Cubic spline interpolation
      (http ://online.redwoods.cc.ca.us/instruct/darnold/laproj/Fall98/SkyMeg/Proj.PDF)

  [3] PRESS William, FLANNERY Brian, TEUKOLSKY Saul, VETTERLING William,
      Numerical recipes in C, Octobre 1985, pages 113 ` 116
                                                       a
      (http ://www.library.cornell.edu/nr/bookcpdf/c3-3.pdf )

Contenu connexe

En vedette (7)

LaOyA Wine & Beer
LaOyA Wine & BeerLaOyA Wine & Beer
LaOyA Wine & Beer
 
Velstar Company Overview 06.2011
Velstar Company Overview 06.2011Velstar Company Overview 06.2011
Velstar Company Overview 06.2011
 
Icr8 sponsorshipdeck
Icr8 sponsorshipdeckIcr8 sponsorshipdeck
Icr8 sponsorshipdeck
 
Primera visita de la fundacion a tetouan
Primera visita de la fundacion a tetouanPrimera visita de la fundacion a tetouan
Primera visita de la fundacion a tetouan
 
Get On Board
Get On BoardGet On Board
Get On Board
 
Coming to Terms with Lexical Chunks: Identifying, Using and Teaching.
Coming to Terms with Lexical Chunks: Identifying, Using and Teaching. Coming to Terms with Lexical Chunks: Identifying, Using and Teaching.
Coming to Terms with Lexical Chunks: Identifying, Using and Teaching.
 
Oldcoolnewschool
OldcoolnewschoolOldcoolnewschool
Oldcoolnewschool
 

Similaire à Rapport

Similaire à Rapport (20)

Dynoptim
DynoptimDynoptim
Dynoptim
 
cours de Matlab
 cours de Matlab cours de Matlab
cours de Matlab
 
defour phd
defour phddefour phd
defour phd
 
Impl´ementation d’une copule mutilvari´ee.pdf
Impl´ementation d’une copule mutilvari´ee.pdfImpl´ementation d’une copule mutilvari´ee.pdf
Impl´ementation d’une copule mutilvari´ee.pdf
 
Coursmp
CoursmpCoursmp
Coursmp
 
Graphes
GraphesGraphes
Graphes
 
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmesEvaluation de la quantité de travail (in)utile dans l’exécution des programmes
Evaluation de la quantité de travail (in)utile dans l’exécution des programmes
 
Box Methode M2 R
Box Methode M2 RBox Methode M2 R
Box Methode M2 R
 
Projet Passerelle sécurisée intelligente pour l'internet des objets
Projet Passerelle sécurisée intelligente pour l'internet des objetsProjet Passerelle sécurisée intelligente pour l'internet des objets
Projet Passerelle sécurisée intelligente pour l'internet des objets
 
Report MyProof
Report MyProofReport MyProof
Report MyProof
 
signal f_sur
signal f_sursignal f_sur
signal f_sur
 
SIGNAL
SIGNAL SIGNAL
SIGNAL
 
PMP Report
PMP ReportPMP Report
PMP Report
 
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
Mémoire Parallélisation d'algorithmes de graphes avec MapReduce sur un cluste...
 
Introduction à MATLAB
Introduction à MATLABIntroduction à MATLAB
Introduction à MATLAB
 
Rapport stage
Rapport stageRapport stage
Rapport stage
 
cours algorithme
cours algorithmecours algorithme
cours algorithme
 
Poly
PolyPoly
Poly
 
Fourth year internship report
Fourth year internship reportFourth year internship report
Fourth year internship report
 
OpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_FinaleOpenCR__Rapport_soutenance_Finale
OpenCR__Rapport_soutenance_Finale
 

Rapport

  • 1. Institut Superieur d’Informatique de Modelisation et de leurs Applications complexe des cezeaux BP 125 - 63173 aubiere cedex Rapport de Projet 2`me ann´e e e Implantation de la methode EMD en C avec interface Matlab Pr´sent´ par : Tarik Boustane e e Projet de 100 heures et Gw´nol´ Quellec e e de Novembre 2003 ` Mars 2004 a Responsable : Pierre Chainais
  • 2. Remerciements On tient ` remercier particuli`rement notre maˆ a e ıtre de projet, Pierre CHAINAIS, enseignant-chercheur ` l’ISIMA de Clermont-Ferrand, pour ses conseils avis´s et ses en- a e couragements, sa sympathie, qui nous ont beaucoup aid´s dans la r´alisation et la r´ussite e e e de ce projet.
  • 3. R´sum´ e e En 1998, l’Empirical Mode Decomposition (EMD), une nouvelle m´thode d’ana- e lyse du signal a ´t´ propos´e par N.E. Huang. Cette m´thode, qui est purement algo- ee e e rithmique, a d´j` ´t´ impl´ment´e sous Matlab par l’´quipe de P. Flandrin (ENS Lyon). eaee e e e Mais le nombre d’op´rations pour d´composer un signal par EMD croˆ rapidement avec e e ıt sa taille, ce qui implique de longs temps de calcul sous Matlab. Le travail effectu´ dans ce projet a consist´ ` implanter l’algorithme en langage C e e a pour r´soudre ce probl`me. Il a fallu pour cela coder une m´thode d’interpolation, la e e e plus adapt´e ´tant l’interpolation cubique par des splines, et d´finir des param`tres et e e e e crit`res d’arrˆt. On a dˆ ´galement r´soudre des probl`mes caus´s par d’importants effets e e ue e e e de bords. Pour rendre l’utilisation du programme plus pratique, on a r´alis´ une inter- e e face avec Matlab. Finalement, on a analys´ quelques exemples susceptibles d’ouvrir des e perspectives pour la m´thode. e Mots cl´s : Empirical Mode Decomposition, temps de calcul, interpolation, interface avec e Matlab Abstract In 1998, the Empirical Mode Decomposition (EMD), a new signal analysis tech- nique has been pioneered by N.E. Huang. This method, only defined by an algorithm, has already been implemented into Matlab by P. Flandrin’s team (ENS Lyon). Anyway, the number of calculations to decompose a signal by the EMD quickly increases with its size, which involves a considerable computation time using Matlab. The work we carried out in this project consisted in coding the algorithm in C lan- guage to solve this problem. In that purpose, we had to code an interpolation method, the most suited being the cubic spline interpolation, and define parameters and stopping criteria. We also had to solve problems caused by considerable side effects. To make the program more user-friendly, we built an interface with Matlab. Finally, we analysed examples likely to lead to new prospects for the technique. Keywords : Empirical Mode Decomposition, computation time, interpolation, interface with Matlab
  • 4. Table des mati`res e Remerciements R´sum´ e e Table des mati`res e Table des figures Introduction 6 1 Pr´sentation du probl`me e e 7 1.1 Int´rˆts de la m´thode EMD . . . . . . . . . . . . . . . . . . . . . . . . . . ee e 7 1.2 Travail demand´ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 7 1.3 Algorithme de principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2 M´thodes utilis´es e e 9 2.1 Interpolation cubique par des splines . . . . . . . . . . . . . . . . . . . . . 9 2.2 Choix des valeurs ` tabuler pour l’interpolation a . . . . . . . . . . . . . . . 9 2.3 Pr´cision des calculs . . . . . . . . . . . . . . . e . . . . . . . . . . . . . . . 10 2.4 Interface C/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3 R´sultats et discussion e 14 3.1 Analyse d’un exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.2 Temps de calcul du programme . . . . . . . . . . . . . . . . . . . . . . . . 15 3.3 Probl`me non r´solu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e e 15 Conclusion 17 R´f´rences bibliographiques ee
  • 5. Table des figures 1 Enveloppes sup´rieures et inf´rieures d’un signal . . e e . . . . . . . . . . . . . 11 2 Choix des valeurs ` tabuler pour l’interpolation . . a . . . . . . . . . . . . . 11 3 Influence des valeurs tabul´es pour l’interpolation . e . . . . . . . . . . . . . 12 4 Somme d’un signal triangulaire et d’une sinuso¨ ıde . . . . . . . . . . . . . . 14 5 Temps de calcul en fonction de la taille de l’instance . . . . . . . . . . . . . 15 6 Probl`me des termes parasites . . . . . . . . . . . . e . . . . . . . . . . . . . 16
  • 6. Introduction Dans le cadre de notre deuxi`me d’´tudes en sp´cialit´ calcul scientifique et mod´lisa- e e e e e tion ` l’ISIMA, nous avons r´alis´ un projet de cent heures r´parties sur cinq mois, entre a e e e novembre 2003 et mars 2004. Il y a six ans, une nouvelle m´thode d’analyse du signal a ´t´ propos´e par N.E. e ee e Huang. Cette m´thode a pour particularit´ de n’ˆtre d´finie que par un algorithme et, e e e e bien que sans fondements th´oriques, elle s’av`re tr`s efficace. Des recherches sont ef- e e e fectu´es pour tenter de justifier la m´thode. Afin de comprendre pourquoi elle fonctionne e e aussi bien, on a besoin d’outils pour l’´tudier, d’o` l’int´rˆt de la coder. e u ee Cet algorithme a d´j` ´t´ impl´ment´ sous Matlab. Il est n´anmoins int´ressant de le eaee e e e e programmer en C, afin de pouvoir ´tudier des signaux de grande taille en minimisant le e temps de calcul. Ainsi le but de notre projet a ´t´ d’impl´menter la m´thode en C avec ee e e interface Matlab. Dans un premier temps, nous allons pr´senter notre ´tude en d´crivant le principe de e e e l’EMD. Puis nous d´taillerons les m´thodes utilis´es dans notre programme. Enfin, nous e e e analyserons le r´sultat de l’ex´cution de notre programme sur un exemple et discuterons e e de ses performances. 6
  • 7. 1 Pr´sentation du probl`me e e 1.1 Int´rˆts de la m´thode EMD e e e La m´thode EMD a pour objectif de d´composer des signaux en diff´rents modes ayant e e e une bonne signification physique. Cela veut dire notamment que la connaissance de ces modes permet de comprendre de mani`re intuitive le contenu fr´quentiel du signal. e e Les m´thodes classiques d´composent un signal sur une base de fonctions propre ` la e e a m´thode, qui sont donc ind´pendantes du signal ´tudi´. Ainsi, par exemple, la transform´e e e e e e de Fourier d´compose un signal en une somme de sinuso¨ e ıdes. La m´thode des ondelettes, e quant ` elle, utilise pour fonctions de base les ”ondelettes”, qui sont des fonctions lo- a calis´es : la signification physique des diff´rents modes est donc d´j` meilleure. e e ea La m´thode EMD, au contraire, a une approche adaptative : pour chaque signal ´tudi´, e e e une nouvelle base de fonctions est construite. Ainsi ces modes d´criront mieux le signal. e Ces modes, appel´s IMFs (Intrinsic Mode Functions), ont pour seule caract´ristique d’ˆtre e e e de moyenne nulle. 1.2 Travail demand´ e L’algorithme a d´j` ´t´ impl´ment´ sous Matlab par l’´quipe de P. Flandrin (ENS ea ee e e e Lyon). Cependant, le nombre d’op´rations ` r´aliser pour d´composer un signal par la e a e e m´thode EMD croˆ rapidement avec la taille des signaux. Or l’inconv´nient de la pro- e ıt e grammation sous Matlab, qui utilise un langage de haut niveau, est que les temps de calculs sont relativement importants. Pour r´soudre ce probl`me, il ´tait donc int´ressant de programmer la m´thode en C. e e e e e Cependant, il est commode de pouvoir appeler le programme depuis l’invite de commande Matlab. En effet, ceci permet notamment d’utiliser l’interface graphique de Matlab pour visualiser les sorties du programme. Il nous a donc ´t´ demand´ d’´crire un programme en C, r´alisant la d´composition ee e e e e d’un signal par la m´thode EMD, qui puisse ˆtre compil´ et ex´cut´ depuis l’invite de e e e e e commande Matlab, en r´alisant une interface. e 1.3 Algorithme de principe L’EMD, tel que l’explique l’article On empirical mode decomposition and its algorithms ([1]), consid`re les oscillations dans un signal au niveau local. Sur un intervalle s´parant e e deux extrema cons´cutifs, on s´pare le signal en un terme de haute fr´quence et un terme e e e de basse fr´quence. Dans un premier temps, on ´limine celui de basse fr´quence (dans e e e tout le signal) pour isoler celui de haute fr´quence. On a alors extrait un premier mode. e Ensuite, on it`re sur le r´sidu. e e On assimile le terme de basse fr´quence ` la moyenne entre les enveloppes inf´rieure e a e et sup´rieure du signal. Ces enveloppes sont calcul´es par interpolation entre les minima e e (pour l’enveloppe inf´rieure) ou les maxima (pour l’enveloppe sup´rieure) du signal. En e e pratique, ce n’est pas suffisant : pour isoler le terme de haute fr´quence, il faut ´liminer e e la moyenne des enveloppes du signal courant jusqu’` ce que celle-ci devienne nulle. On a r´p`te finalement le proc´d´ sur le signal, tel qu’il ´tait avant la phase d’´limination, priv´ e e e e e e e du terme de haute fr´quence. e On consid`re que l’on a extrait tous les modes du signal lorsqu’il compte moins de e 7
  • 8. trois extrema (≡ moins d’une p´riode). e Soit y=f(x) le signal discr´tis´ ` analyser, x et y sont deux vecteurs de taille n e e a param´tr´s par t. e e lecture des entr´es (x et y) depuis Matlab e a=amplitude de y tant que y contient au moins une p´riode (ie. au moins trois extrema) faire e ∀ t, z(t)=y(t) ∀ t, m(t)=y(t) tant que amplitude de m ≥ ε×a faire recherche des extrema de z → (xmax ,ymax ,xmin ,ymin )=min max(x,z) interpolation des maximums de z → emax =interpolation(xmax ,ymax ,x) interpolation des minimums de z → emin =interpolation(xmin ,ymin ,x) calcul de la moyenne des enveloppes → ∀ t, m(t)=(emax (t)+emin (t))/2 mise ` jour de z a → ∀ t, z(t)=z(t)-m(t) fait sauvegarde de z dans la liste des modes ∀ t, y(t)=y(t)-z(t) fait sauvegarde de y dans la liste des modes (en tant que r´sidu) e ´criture des sorties (la matrice contenant les modes) sous Matlab e • min max(x,z) doit retourner les abscisses et les ordonn´es des extrema du signal e z=f(x) • interpolation(xtabul´s ,ytabul´s ,x) doit retourner les valeurs de la fonction interpolant e e les points tabul´s (xtabul´s ,ytabul´s ) pour les abscisses x e e e On a vu que pour extraire le terme de haute fr´quence d’un signal, il fallait rechercher e les extrema d’un signal et interpoler entre ces points. Nous pr´ciserons par la suite com- e ment on a impl´ment´ les fonctions min max et interpolation. Nous discuterons ´galement e e e de l’influence et du choix du param`tre ε qui contrˆle l’´limination. Nous verrons aussi e o e comment g´rer les entr´es-sorties avec Matlab. e e 8
  • 9. 2 M´thodes utilis´es e e 2.1 Interpolation cubique par des splines On utilise la m´thode d’interpolation par des splines car on a besoin d’avoir des courbes e lisses afin de ne pas ajouter des irr´gularit´s dans le signal. e e Soit x = [x1 , x2 , ..., xn ] et y = [y1 , y2 , ..., yn ] les abscisses et les ordonn´es des points ` e a interpoler. Le principe de cette m´thode (expliqu´ dans Cubic spline interpolation [2]) est e e de calculer une fonction interpolante S :  s1 (x) si x1 ≤ x ≤ x2   s2 (x) si x2 ≤ x ≤ x3   S(x) =  ...   sn−1 (x) si xn−1 ≤ x ≤ xn  o` les si sont des polynˆmes de degr´ 3. Pour que S soit une spline, il faut que S, S’ et u o e S” soient continues sur l’intervalle [x1 ,xn ]. De plus, on a S(xi )=yi ∀ i. On obtient que pour x [xi , xi+1 [ : S(x) = Ayi + Byi+1 + Cyi + Dyi+1 avec : xi+1 − x x − xi A= B =1−A= xi+1 − xi xi+1 − xi 1 1 C = (A3 − A)(xi+1 − xi )2 D = (B 3 − B)(xi+1 − xi )2 6 6 les yi ´tant calcul´s par la r´solution du syst`me : e e e e xj − xj−1 xj+1 − xj−1 xj+1 − xj yj+1 − yj yj − yj−1 yj−1 + yj + yj+1 = − , j {2, ..., n−1} 6 3 6 xj+1 − xj xj − xj−1 (d’apr`s Numerical recipes in C [3]). Ce syst`me est tridiagonal, ce qui est pratique car e e il existe des algorithmes pour r´soudre de tels syst`mes en O(n). e e Cependant, on a n-2 ´quations pour n inconnues, il faut donc en fixer deux. On a fix´ e e y1 et yn ` 0 (on a alors ce qu’on appelle des splines naturelles). a On a repr´sent´ le r´sultat de l’interpolation des minima, et celle des maxima, d’un e e e signal par cette m´thode (voir Fig. 1). e 2.2 Choix des valeurs ` tabuler pour l’interpolation a La fonction interpolation prend en entr´e la liste des minima (ou des maxima) d’un e signal ainsi que celle des abscisses correspondantes. Comme on l’a vu pr´cedemment, e la fonction d´termine, entre deux points cons´cutifs, un polynˆme afin de construire la e e o fonction interpolante. Le probl`me qui se pose est que le premier et le dernier ´chantillon du signal ne sont e e pas, en g´n´ral, des minima et des maxima. Il faut n´anmoins fournir ` interpolation une e e e a valeur en ces points pour d´terminer le premier et le dernier polynˆme de la fonction e o interpolante. Soit y le signal de longueur n dont on doit d´terminer les enveloppes. Soit y max (resp. e y min) le vecteur de longueur n max (resp. n min) qui contient l’ordonn´e des points ` e a interpoler pour trouver l’enveloppe sup´rieure (resp. inf´rieure). y max contient donc les e e maxima de y (de y max2 ` y maxn max−1 ) (idem pour y min). Il reste ` d´terminer a a e 9
  • 10. y max1 , y maxn max , y min1 et y minn min : Premi`re m´thode : Choisir simplement (voir Fig. 2 - premi`re m´thode) : e e e e y max1 =y max2 , y maxn max =y maxn max−1 , y min1 =y min2 et y minn min =y minn min−1 . Cette technique provoque une erreur importante aux extr´mit´s du signal, mais cette e e erreur ne se propage pas sur le signal tout entier (voir Fig. 3 - premi`re m´thode). e e Deuxi`me m´thode : Consid´rer la pente du signal y en 1 et en n (voir Fig. 2 - e e e deuxi`me m´thode) . Ainsi en 1, par exemple : e e si le signal est croissant, on choisit y min1 =y1 et y max1 =y max2 . si le signal est d´croissant, on choisit y max1 =y1 et y min1 =y min2 . e Cette technique donne un r´sultat plus pr´cis localement, mais provoque une erreur e e qui se propage dans tout le signal. Ceci implique l’apparition de termes parasites dans la d´composition (voir Fig. 3 - deuxi`me m´thode). e e e Remarque : on aurait eu le mˆme probl`me (en pire) si on avait pris y min1 =y1 , y max1 =y1 , e e y minn min =yn et y maxn max =yn . Compromis : Au d´but du signal y, par exemple, si y min2 ≤ y1 ≤ y max2 , on choisit e la premi`re m´thode, sinon, on choisit la deuxi`me. En effet, dans ce cas, on consid`re e e e e que la tendance g´n´rale du signal est constante au d´but du signal. On ´vite ainsi de e e e e perturber l’interpolation. Par contre, dans le cas contraire, on ne peut pas toujours le consid´rer. On minimise ainsi les deux types de d´fauts (voir Fig. 3 - compromis). e e 2.3 Pr´cision des calculs e Lorsque l’on a commenc´ ` impl´menter l’algorithme, on a cod´ nos donn´es en r´els ea e e e e simple pr´cision. L’objectif ´tait de rendre les calculs plus rapides et on pensait que la e e pr´cision serait suffisante. e Cependant, on s’est rendu compte que le programme ne convergeait pas toujours. En effet, dans la boucle interne, on doit rendre l’amplitude crˆte ` crˆte du vecteur m e a e (moyenne des enveloppes inf´rieures et sup´rieures du signal courant) inf´rieure ` une e e e a constante (ε×amplitude(signal d’entr´e)). Or, pour que le programme converge, il fallait e augmenter cette constante. Du coup, on a reconsid´r´ l’hypoth`se selon laquelle le codage des donn´es ´tait suf- ee e e e fisamment pr´cis. On s’est rendu compte qu’en travaillant avec des r´els double pr´cision, e e e on n’avait plus de probl`mes de convergence. e Auparavant, la d´composition de certains signaux simples (i.e. compos´s de quelques e e milliers de points avec relativement peu d’oscillations) divergeait pour ε = 10−3 . Apr`se −8 cette modification, on a refait les mˆmes tests avec un ε = 10 : tous les tests ont ´t´ e ee positifs. Ce probl`me est probablement dˆ au fait que, lors de l’interpolation, on inverse un e u syst`me lin´aire. En effet, si la matrice du syst`me est mal conditionn´e, une l´g`re e e e e e e impr´cision sur ses valeurs peut conduire ` des r´sultats tout ` fait diff´rents de ceux e a e a e attendus. 10
  • 11. Fig. 1 – Enveloppes sup´rieures et inf´rieures d’un signal e e On a interpol´ entre les minima (resp. maxima) du signal y=sinc(x), e ce qui constitue l’enveloppe inf´rieure (resp. sup´rieure) de ce signal. e e L’enveloppe sup´rieure pr´sente plus d’oscillations que ce qu’on aurait e e pu esp´rer. e Fig. 2 – Choix des valeurs ` tabuler pour l’interpolation a 11
  • 12. Fig. 3 – Influence des valeurs tabul´es pour l’interpolation e Concernant la premi`re fa¸on de choisir les valeurs ` tabuler, si le pre- e c a mier point du signal est sup´rieur au premier maximum ou inf´rieur e e au premier minimum, un gros d´faut apparaˆ Concernant la deuxi`me, e ıt. e c’est le contraire. Le probl`me est le mˆme ` la fin du signal. En choisis- e e a sant quelle m´thode appliquer en fonction de ce crit`re, les d´fauts sont e e e moins importants. 12
  • 13. 2.4 Interface C/Matlab Le programme doit lire deux vecteurs (x et y) au d´but du programme et ´crire une e e matrice (imfs, qui contient les modes extraits du signal) ` la fin. a Pour cela, la fonction principale doit avoir le prototype suivant : void mexFunction(int nlhs,mxArray *plhs[ ],int nrhs,const mxArray *prhs[ ]) • nlhs : nombre d’arguments en sortie • plhs : liste de pointeurs vers les matrices Matlab en sortie • nrhs : nombre d’arguments en entr´e e • prhs : liste de pointeurs vers les matrices Matlab en entr´e e Pour lire les donn´es des matrices en entr´e, on utilise les fonctions suivantes : e e • mxGetM(prhs[i]) : lecture du nombre de lignes de la i`me matrice e • mxGetN(prhs[i]) : lecture du nombre de colonnes de la i`me matrice e • mxGetPr(prhs[i]) : lecture du pointeur vers les donn´es e Pour ´crire les donn´es des matrices en sortie, on utilise les fonctions suivantes : e e • plhs[i]=mxCreateDoubleMatrix(m,n,mxREAL) : allocation d’une zone m´moire pour e `me e cr´er la i e matrice Matlab (de taille m × n) • mxGetPr(plhs[i]) : r´cup´ration depuis le programme d’un pointeur vers cette zone e e m´moire, pour y ´crire les donn´es e e e Le programme peut alors ˆtre compil´ depuis l’invite de commande Matlab e e mex emd.c et y ˆtre appel´ comme une fonction Matlab. e e Grˆce ` l’utilisation des splines pour l’interpolation, on esp`re bien approximer le terme a a e de basse fr´quence du signal, que l’on veut ´liminer. Grˆce ` une m´thode heuristique de e e a a e choix des valeurs ` tabuler pour l’interpolation, on esp`re diminuer efficacement les effets a e de bord. Nous verrons dans quelle mesure l’extraction des termes est pr´cise. En outre, on e verra quelles sont les performances du programme en terme de temps de calcul, compte tenu de la pr´cision des calculs. e 13
  • 14. 3 R´sultats et discussion e 3.1 Analyse d’un exemple La caract´ristique de la m´thode EMD est de d´composer un signal en des modes e e e bien adapt´s au signal. Ainsi la d´composition d’un signal triangulaire donne un seul e e terme : lui-mˆme. En effet, c’est trivial : d`s la premi`re it´ration de la boucle interne du e e e e programme, les enveloppes sup´rieures et inf´rieures du signal sont constantes et oppos´es, e e e ce qui implique que la moyenne est nulle. Donc on extrait le triangle, ainsi le reste est nul et le programme s’arrˆte. Pour que ¸` ne soit plus trivial, on cr´e une perturbation e ca e en ajoutant une sinuso¨ ıde. On voit (Fig. 4, ωcosinus = 15ω0 ) que, si la fr´quence de la sinuso¨ est suffisamment e ıde diff´rente de celle du triangle, la d´composition de ce signal donne ` peu pr`s la mˆme e e a e e sinuso¨ et le mˆme triangle. Les modes sont donc biens adapt´s au signal. ıde e e Cet exemple nous montre ´galement (Fig. 4, ωcosinus = 3ω0 ) que l’on peut extraire e le fondamental d’un signal. En effet, la d´composition en s´ries de Fourier d’un signal e e triangulaire est de la forme : ∞ cos((2k + 1)ω0 t) f (t) = C × k=0 (2k + 1)2 Comme l’amplitude des harmoniques diminue en 1/n2 pour un signal triangulaire, l’EMD ne voit pas les fr´quences ωi > ω0 s´par´ment. e e e Or, en ajoutant suffisamment d’´nergie ` la premi`re harmonique (une sinuso¨ de e a e ıde fr´quence 3ω0 ), on force l’EMD ` ne pas voir un seul mode dans le signal, mais deux : e a un premier mode qui contient la sinuso¨ et les harmoniques du triangle, un second qui ıde contient le fondamental du triangle. Il serait donc envisageable d’utiliser l’EMD pour d´composer it´rativement un signal en s´rie de Fourier, grˆce ` un proc´d´ similaire. e e e a a e e Fig. 4 – Somme d’un signal triangulaire et d’une sinuso¨ ıde La sinuso¨ a, dans le premier cas, la fr´quence du 7`me harmonique du ıde e e triangle, on r´cup`re alors pratiquement, apr`s EMD, les deux signaux e e e somm´s. Dans le deuxi`me cas, la fr´quence de la sinuso¨ est celle du e e e ıde premier harmonique du triangle, ce n’est alors plus le cas : le contenu fr´quentiel des deux signaux somm´s n’est plus s´parable. e e e 14
  • 15. 3.2 Temps de calcul du programme On a mesur´ les temps de calcul du programme, sur plusieurs signaux, en faisant varier e la taille de l’instance et le param`tre ε de contrˆle de la boucle interne. On a compar´ ces e o e temps de calcul avec ceux du programme Matlab de Flandrin. (voir Fig. 5) De mani`re g´n´rale, on remarque que le rapport entre les temps de calcul du pro- e e e gramme Matlab et ceux du programme C augmente avec la taille de l’instance. Par contre, le param`tre ε a apparemment peu d’influence sur cette augmentation. e Fig. 5 – Temps de calcul en fonction de la taille de l’instance Comparaison des dur´es d’extraction des trois premiers modes du si- e gnal ”y=cos(x)+cos(3x)+cos(5x)” avec un nombre de points variant de 10.000 ` 100.000 points. Mesures effectu´es sur un PC avec processeur a e AMD Athlon 1,47GHz 3.3 Probl`me non r´solu e e Lorsque l’on fait la somme de sinuso¨ ıdes suffisamment s´par´es fr´quentiellement, e e e on devrait extraire ses diff´rentes sinuso¨ e ıdes plus un reste. Cependant, quelque soit la pr´cision de l’´limination (i.e. quelque soit la param`tre ε), on peut obtenir des ter- e e e mes suppl´mentaires (voir Fig. 6). Cependant leur ´nergie est n´gligeable devant les e e e autres termes quand ε est suffisamment petit. Ceci met en ´vidence que lors de la phase e d’´limination, on introduit des perturbations. En effet, plus on ´limine (≡ plus ε est petit) e e plus, en g´n´ral, le nombre de modes extraits augmente. e e 15
  • 16. Fig. 6 – Probl`me des termes parasites e Dans cet exemple (y=cos(x)+cos(3x)/3+cos(5x)), on voit que le nombre de termes suppl´mentaires augmente quand ε diminue (ce n’est pas tou- e jours le cas). On voit cependant qu’il faut qu’ε soit suffisamment petit pour d´tecter toutes les oscillations. e 16
  • 17. Conclusion Les principaux objectifs fix´s ont ´t´ atteints : avoir un programme rapide avec une e ee interface Matlab, bien que certaines am´liorations soient envisageables. Les probl`mes e e rencontr´s ont d’abord ´t´ d’ordre communicationnel. Nous avions en effet des difficult´s e ee e a e ` pr´senter, ` chaque rendez-vous avec notre responsable de projet, le travail effectu´. Les a e consignes et conseils de ce dernier nous ont cependant permis, en partie, de les r´soudre. e Ils ont ensuite ´t´ d’ordre technique : nous avions un programme qui ne convergeait pas. ee Nous avons r´solu le probl`me en augmentant la pr´cision des calculs. De plus, La m´thode e e e e EMD est tr`s sensible aux effets de bord (au fait que les signaux ´tudi´s ne sont pas infi- e e e nis). Grˆce ` un choix des valeurs ` tabuler pour l’interpolation, nous les avons att´nu´s. a a a e e Les nombreuses explications fournies par notre responsable de projet sur l’analyse des signaux nous ont permis d’augmenter nos connaissances et notre compr´hension dans ce e domaine. Le projet laisse des perspectives d’exploitation. En effet, par un proc´d´ qu’il reste ` e e a d´finir, le programme pourrait ˆtre utilis´ pour d´composer, algorithmiquement, un signal e e e e en s´ries de Fourier. e 17
  • 18. R´f´rences bibliographiques ee [1] RILLING Gabriel, FLANDRIN Patrick, GONCALVES Paulo, On empirical mode decomposition and its algorithms, Juin 2003 (http ://perso.ens-lyon.fr/patrick.flandrin/NSIP03.pdf ) [2] MCKINLEY Sky, LEVINE Megan, Cubic spline interpolation (http ://online.redwoods.cc.ca.us/instruct/darnold/laproj/Fall98/SkyMeg/Proj.PDF) [3] PRESS William, FLANNERY Brian, TEUKOLSKY Saul, VETTERLING William, Numerical recipes in C, Octobre 1985, pages 113 ` 116 a (http ://www.library.cornell.edu/nr/bookcpdf/c3-3.pdf )