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