TP. 1 Rappels et filtrage avec Matlab - I2M - Aix

Transcription

TP. 1 Rappels et filtrage avec Matlab - I2M - Aix
Aix-Marseille Université
Année 2007-2008
Master de mathématiques
semestre 2
Méthodes mathématiques en traitement du signal
TP.
Dans ce TP, on se propose de regarder sur un exemple le problème de détection des potentiels évoqués dans les électroencéphalogrammes.
Pour obtenir des informations sur l’activité cérébrale lors d’une expérience, les chercheurs
en neurosciences utilisent les enregistrements d’éléctroencéphalogrammes. Le sujet sur
lequel a lieu l’expérience est placé dans une chambre isolée éléctriquement. On lui met
un casque d’enregistrement sur la tête, chaque électrode va alors enregistrer l’activité
électrique au cours du temps du point du cortex (surface du crâne) où elle est placée.
L’expérience est répétée un certain nombre de fois, et à chaque fois la personne réagit
plus ou moins rapidement à ce qui lui est demandé. Les chercheurs cherchent ensuite à
extraire ce qu’ils appellent les ”potentiels évoqués” qui correspondent à priori à l’activité
cérébrale du à l’expérience elle-même.
même potentiel évoqué arrive à chaque fois à des temps légérement différents dans chaque
essai.
De plus classiquement, afin d’étudier les caractéristiques du bruit avant l’expérience,
l’enregistrement commence quelques secondes avant l’expérience elle-même. Le sujet reste
inactif.
On va ainsi considérer que dans chaque essai, les premiers 512 points ne contiennent pas
le signal mais le bruit. On suppose d’autre part que ce bruit est un bruit du à un pro1
cessus AR d’ordre 2 (de fonction de transfert b̂(ω) = â(ω)
avec â : ω 7→ 1+a1 e−iω +a2 e−2iω ).
1
1.1
1.1.1
Rappels et filtrage avec Matlab
Transformée de Fourier finie et opérations
Transformée de Fourier finie
La transformée de Fourier finie s’effectue via l’algorithme de transformée de Fourier rapide
FFT, en anglais “Fast Fourier Transform”. L’instruction fft permet d’effectuer une transformée de Fourier finie directe, et l’instruction ifft effectue des transformées inverses.
C’est à dire étant donné un vecteur u = (u0 , .., uN −1), la commande fft permet de calculer
(uˆ0 , .., uNˆ−1) =fft(u) avec
exmple de potentiel evoque
25
20
15
ûk =
10
N
−1
X
kn
un e−2iπ N , k = 0, ..., N − 1
n=0
5
et la commande ifft permet d’effectuer l’opération qui à un vecteur du type û = (uˆ0 , .., uNˆ−
permet de calculer le vecteur u = (u0 , .., uN −1) =ifft(û) avec
0
−5
−10
un =
−15
−20
0
50
100
150
200
250
300
N −1
kn
1 X
ûk e2iπ N .
N k=0
350
1.1.2
Opérations
Les signaux d”electroencéphalographie étant en général très bruités la détection des potentiels évoqués est un problème très difficile de traitement du signal.
On se propose ici sur des simulations d’examiner un exemple où on a un potentiel évoqué
plongé dans un bruit de type AR.
(cf TD 1 exercice 1 question 5)
La méthode que l’on appliquera est celle du filtre adapté. Elle suppose qu’on connait le
signal qu’on cherche à détecter, et la densité spectrale du bruit dans lequel il est plongé.
Les données sur lesquelles on va travailler sont des simulations de l’enregistrement sur
une électrode et correspondent à la répétition 50 fois de suite d’une même expérience. Le
On rappelle que le produit de convolution circulaire de deux suites la suite (wn ) définie
1
2
Soient deux suites finies f = {fn , n = 0..N − 1} et g = {gn , n = 0..N − 1} de même
longueur N.
par
wn =
N
−1
X
fm .gn−m = fn ⋆ gn où les indices n − m sont définis modulo N
(1)
3. Etudier les symétries de la transformation de Fourier finie sur des exemples. Par
exemple, vérifier que la transformée de Fourier d’un vecteur réel possède la symétrie
Hermitienne. On pourra utiliser la fonction fftshift (se documenter: help fftshif
m=0
On note fˆ = (fˆk ) et ĝ = (ĝk ) les transformées de Fourier finies de f = (fn ) et g = (gn ). On
a que w = (wn ) est une suite finie et que sa transformée de Fourier finie notée ŵ = (ŵk )
vérifie
ŵk = fˆk .ĝk , ∀k = 0..N − 1
1.1.3
>>u=ones(512,1);
>>v=ifft(u);
>>y=filter(1,a,v);
>>ychap=fft(y);
>>yvis=fftshift(ychap);
>>figure;plot(real(yvis));
Même question avec les vecteurs a = [1 0.9], a = [1 0 − 0.93].
(2)
avec Matlab
Pour obtenir ŵ = (ŵ0 , ŵ1 , ..wNˆ−1 ), il nous suffit donc de construire le vecteur dont chaque
coordonnée est le produit des coordonnées correspondantes de fˆ et ĝ. Cela se fait grâce
à la commande .*
Ce qui donne les commandes
>>fchap=fft(f);
>>gchap=fft(g);
>>wchap=fchap.*gchap;
Conventions d’indice: Il est important d’être attentif au point suivant: dans
l’environnement numérique Matlab, les indices de tableau commencent à 1, et
pas 0. Par contre, les routines fft et ifft considèrent le premier élément
du tableau comme la coordonnée d’indice 0. Par exemple, l’élement u(1) du
vecteur u contient en fait la coordonnée u0 , l’élément u(2) contient la coordonnée u1 , et ainsi de suite.
1.2
4. on considère le vecteur a = [1 − 0.9]. Indiquer ce qu’on obtient théoriquement en
tapant les commandes suivantes
Filtrage IIR avec la fonction filter
b(ω)
On considère un filtrage dont la fonction de transfert est donnée par m(ω) = a(ω)
où b et
a sont deux polynômes trigonométriques.
Ce filtrage peut être effectué directement à l’aide de la fonction filter dans Matlab sans
avoir à passer par les fonctions fft et *.
5. On considère maintenant un processus AR résultat du filtrage d’un bruit blanc
de variance σ 2 donnée par un filtre dont la fonction de transfert est donnée par
N
P
1
avec â : ω 7→ 1 +
aj e−ijω polynôme trigonométrique de degré N dont
b̂(ω) = â(ω)
j=1
les coefficients aj sont donnés.
Écrire un programme à l’aide de la fonction filter qui permette de visualiser la
densité spectrale de ce processus.
2.2
Télécharger sur la page web http://www.cmi.univ-mrs.fr/∼melot/Master1/TPAR.html
les documents pour le TP.
Ouvrir Matlab. Dans la fenêtre de commande effectuer la commande load TP.mat pour
télécharger les signaux en format Matlab. À l’aide de la commande whos examiner la
nature des variables avec lesquelles vous allez travailler.
Visualiser les vecteurs signalo et signalbruite à l’aide de la commande plot.
Calculer la moyenne sur tous les essais de signalbruite et visualiser la.
2.3
2
Travaux pratiques
2.1
Données
Étude du bruit
On cherche dans un premier temps la densité spectrale du bruit AR auquel on a affaire.
Calculer une estimation de la densité spectrale du bruit à l’aide de l’algorithme de YuleWalker vu en TD.
Prise en main
1. Générer un vecteur de longueur fixée (deux sinusoı̂des, un dirac, un bruit blanc de
longueur n). Calculer sa TFF en utilisant fft, et afficher cette dernière graphiquement.
2. Calculer la transformée de Fourier inverse en utilisant ifft, la représenter graphiquement, et comparer au vecteur de départ.
3
2.4
Détection
Sur un essai d’abord programmer l’algorithme du filtre adapté afin de détecter le moment
où s’est déclenché le potentiel évoqué.
Puis le tester sur tous les essais.
4

Documents pareils