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
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 )