Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées...

79
Traitement des données avec Matlab Une introduction

Transcript of Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées...

Page 1: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Traitement des données avec Matlab

Une introduction

Page 2: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Matlab : « Matrix laboratory »

● Un langage de programmation & un environnement de développement

pour le calcul numérique et la visualisation

� Manipulation de matrices

� Tracés de courbes

� Mise en œuvre d’algorithme

% Cleve Moler, concepteur du langage Matlab (fin 70’s) en Fortran

� Mise en œuvre d’algorithme

� Création d’applications

● Facile à apprendre, simple à utiliser

● Plus d’1 million d’utilisateurs (industrie, recherche

académique ; ingénierie, sciences, économie…)

● « Equivalents » gratuits : GNU Octave , Scilab, SciPy

Page 3: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

● Une bibliothèque de fonctions intégrées

Le concept Matlab : les toolboxs

Une fonction :

▸ un fichier texte contenant une série d’instructions

▸ retourne un résultat en fonction des paramètres d’entrée▸ retourne un résultat en fonction des paramètres d’entrée

▸ nom souvent très intuitif

Exemples :

mean : la moyenne d’un tableau de données

abs : la valeur absolue

plot : trace une courbe

Page 4: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

● Une bibliothèque de fonctions intégrées

Des centaines de commandes prédéfinies pour effectuer des calculs plus ou

moins courants et spécifiques, à partir des données :

� Mathématique élémentaire, calculs matriciels,

Le concept Matlab : les toolboxs

� Mathématique élémentaire, calculs matriciels,

résolution d’équations linéaires & non-linéaires…

� Statistique descriptive

� Interpolation 1-D

� Traitement du signal : convolution, transformée de Fourier, filtres…

� Graphiques : 2-D, 3-D, histogrammes, barres d’erreurs…

� Lecture & écriture de fichiers de données

Page 5: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

● Des toolboxs supplémentaires spécialisées (payantes), fonctionnalités avancées

�Signal Processing

�Image Processing

�Statistics

�Wavelet

�…

Le concept Matlab : les toolboxs

�…

● Des toolboxs développées dans des domaines spécifiques par le monde

académique, souvent libres d’accès

� SPM8 : Traitement et analyse des données d’IRM fonctionnelle

� EEGLab : données EEG

� FieldTrip : données MEG

● Tout une batterie de fonctions proposées par la communauté des utilisateurs :

MathWorks File Exchange

Page 6: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Objectifs

� Manipuler les données

� Effectuer des calculs de base

� Visualiser les données

Plan

� La prise en main

� Les matrices et les opérations

� Fonctions & scripts

� Exemples avec les données

? ?

Page 7: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’interface

Page 8: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’interface

L’invite de commandes :

exécution de calculs & lancement de programmes

Page 9: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’interface

Des volets supplémentaires éventuels (historique des commandes, liste des

variables, aperçu du dossier courant)

Page 10: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

L’aide

Prise en main

� L’interface

Page 11: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’interface

Le répertoire de travail (user path)

� Chemin par défaut pour le chargement et la sauvegarde des variables et des figures

� Scripts du dossier directement exécutables via l’invite de commande

Page 12: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’interface

Set path : liste des dossiers de fonctions

� Définition des chemins d’accès aux différentes toolboxs

� Rend possible l’exécution des scripts depuis l’invite de commande

Page 13: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� L’invite de commande en pratique

Page 14: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Les calculs élémentaires

>> 3^2*(2+5)/(5 -2)

Symbole de

● En mode « calculatrice » : on écrit le calcul désiré ( )25

5232

−+×

Opérateurs courants :

^ : exponentiation

* : multiplication

/ : division

Symbole de

l’invite de

commande

● puis on valide en appuyant sur « Entrée »

Page 15: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

>> 3^2*(2+5)/(5 -2)

ans =

● En mode « calculatrice » : on écrit le calcul désiré puis « Entrée »

� Les calculs élémentaires

Entrée

ans =

21Résultat

assigné à la

variable ans(answer)

Page 16: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

>> 3^2*(2+5)/(5 -2)

ans =

● En mode « calculatrice » : on écrit le calcul désiré puis « Entrée »

� Les calculs élémentaires

ans =

21

>> ans/2

ans =

10.5000 Valeur décimale : « . »

Résultat

assigné à la

variable ans(answer)

Page 17: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Les variables

● Affecter une valeur à une variable

>> a = 35.6

Nom de ma

variable

�Doit commencer par une lettre

�Peut contenir des chiffres (ex. : temp1)

�Distinction entre les minuscules et les majuscules (Temp1 ≠ temp1)

�Caractères autres que les lettres interdits hormis : _ (ex. : temp_1)

Page 18: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Les variables

● Affecter une valeur à une variable

>> a = 35.6

a =

Entrée

a =

35.6000

�Pas nécessaire de déclarer le type, ni d’initialiser

Page 19: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● Affecter une valeur à une variable

>> a = 35.6

a =

� Les variables

a =

35.6000

>> b = 273.15;>>

Pas

d’affichage

Page 20: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● Affecter une valeur à une variable

>> a

a =

� Les variables

a =

35.6000

>> b

b =

273.15

a et b sont conservées en

mémoire = dans le

Workspace

Page 21: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● Lister les variables créées dans le workspace

>> whos

Name Size Bytes Class Attributes

� Les variables

Name Size Bytes Class Attributes

a 1x1 8 double b 1x1 8 double

Page 22: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● Affecter une valeur à une variable

>> tK = a + b

tK =

Créer une nouvelle

variable à partir des

variables déjà définies

� Les variables

308.7500

>> a = 32;

variables déjà définies

Définir une nouvelle

valeur pour a

Page 23: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● Affecter une valeur à une variable

>> tK = a + b

tK =

Pour afficher à

nouveau l’équation

écrite précédemment,

utiliser la flèche

directionnelle ↑ du

clavier

� Les variables

305.1500

clavier

Nouvelle valeur de tK

Page 24: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

● La notation en puissance de 10

>> pot = 2.16*10^( -6)

pot =

� Les variables

61016,2 −×

2.1600e -06

>> pot = 2.16e -6

pot =

2.1600e -06

Notation

équivalente

Page 25: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

�Les variables du workspace sont effacées à la fermeture de Matlab

>> save myvar a b tK Fichier MAT créé dans

le dossier courant

● Pour les sauvegarder :

Nom du fichierVariables à

� Les variables

>> load myvarCharger les variables

dans le workspace

● Pour les récupérer lors d’une nouvelle session ou après

suppression :

Nom du fichierVariables à

stocker

Page 26: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

>> clear a b tK

● Pour effacer certaines variables :

� Les variables

>> clear all

● Pour effacer tout le workspace :

Page 27: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Des constantes prédéfinies

>> pi

ans =

3.1416

>> i

Pour afficher davantage de décimales :

>> format long>> pians =

3.141592653589793

L’unité imaginaire pour définir les >> i

ans =

0.0000 + 1.0000i

>> 0/0

ans =

NaN

L’unité imaginaire pour définir les

nombres complexes (i ou j)

>> i^2ans =

-1

Not-A-Number : résultat numérique

d’une opération non-définie

Page 28: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Des fonctions prédéfinies

>> cos(2*pi)

ans =

1

>> sqrt (25)

Les fonctions trigonométriques :

cos , sin , tan ,

Inverses : asin , acos , …Hyperboliques : sinh , acosh …

Des fonctions mathématiques :>> sqrt (25)

ans =

5

>> round(pi*2)

ans =

6

Des fonctions mathématiques :

sqrt : racine carrée

log , log10 , exp , abs , sign

Des fonctions d’arrondis :

round : entier le plus proche

floor , ceil , fix

Page 29: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� Des fonctions prédéfinies

>> figure

>> plot(2.56,3.18, 'rx' , 'MarkerSize' ,12)

Des fonctions pour la visualisation

Valeur(s) en

abscisseValeur

associées en

Options de

mise en

forme

hist (histogramme),plot3 (tracé 3D), surf (surface),image (images jpeg…)

>> sphere(16)

… des milliers de fonctions prédéfinies

abscisse associées en

ordonnée

forme

Page 30: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Prise en main

� La fonction help

>> help ceil

ceil Round towards plus infinity.ceil(X) rounds the elements of X to the

nearest integers towards infinity.

See also floor , round , fix .

Reference page in Help browser

Utilité, arguments d'entrées,

options, résultats

Reference page in Help browserdoc ceil

>> doc

Recherche de

fonctionnalités par

mot-clefs

Page 31: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’élément de base en Matlab (MATrix LABoratory)

● Presque tout est matrice (tableau de valeurs)

Page 32: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’élément de base en Matlab (MATrix LABoratory)

● Presque tout est matrice (tableau de valeurs)

� Il est capital de savoir les manipuler !

Page 33: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’élément de base en Matlab (MATrix LABoratory)

a(1,1) a(1,2) …. a(1,n)

a(2,1) a(2,2) …. a(2,n)

n colonnes

m lig

ne

s

● Presque tout est matrice (tableau de valeurs)

a(2,1) a(2,2) …. a(2,n)

a(3,1) a(3,2) …. a(3,n)

⁞ ⁞ ⁞a(m,1) a(m,2) …. a(m,n)

m lig

ne

s

Matrice a de dimension m x n

● Un élément est repéré par le couple d’indices (i,j) :

(numéro de la ligne, numéro de la colonne)

Page 34: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

Un nombre : matrice de dimension 1 x 1

Un vecteur en ligne : 1 x n

a(1,1)

� L’élément de base en Matlab (MATrix LABoratory)

Un vecteur en ligne : 1 x n

Un vecteur en colonne : m x 1

n colonnes

a(1,1) a(1,2) …. a(1,n)

m l

ign

es

a(1,1)

a(2,1)

⁞a(m,1)

Page 35: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Une matrice multidimentionnelle (3D) : m x n x p

a(1,1,p) a(1,2,p) …. a(1,n,p)

a(2,1,p) a(2,2,p) …. a(2,n,p)

n colonnes

Les matrices

� L’élément de base en Matlab (MATrix LABoratory)

a(1,1,1) a(1,2,1) …. a(1,n,1)

a(2,1,1) a(2,2,1) …. a(2,n,1)

⁞ ⁞ ⁞a(m,1,1) a(m,2,1) …. a(m,n,1)

a(1,1,2) a(1,2,2) …. a(1,n,2)

a(2,1,2) a(2,2,2) …. a(2,n,2)

⁞ ⁞ ⁞a(m,1,2) a(m,2,2) …. a(m,n,2)

a(2,1,p) a(2,2,p) …. a(2,n,p)

⁞ ⁞ ⁞a(m,1,p) a(m,2,p) …. a(m,n,p)

m l

ign

es

Page 36: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Un nombre (scalaire) : matrice de dimension 1 x 1

Un vecteur en ligne : 1 x 4

61056,1 ×

( )7336529

Les matrices

� Quelques exemples concrets

Un vecteur en colonne : 2 x 1

Une matrice multidimentionnelle : 2 x 3 x 3

− 1954

023

− 231

32412

285

3620

189,1

567,2

Page 37: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

61056,1 ×>> a = 1.56e6;

>> b = [29 5 336 7]

b =

29 5 336 7Les espaces séparent les éléments du

vecteur ligne. Ou les virgules :

Les matrices

� L’affectation

Des crochets pour définir la matrice

Un seul nombre

( )7336529

189,1

567,2

29 5 336 7

>> c = [2.567 ; 1.189]

c =

2.56701.1890

vecteur ligne. Ou les virgules :

>> b = [29,5,336,7];

Les ; séparent les éléments du vecteur

colonne

Page 38: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

− 1954

023

>> d = [3 2 0 ; -4 5 19]

d =

3 2 0

Les ; séparent les lignes d’une matrice

Les matrices

� L’affectation

3 2 0-4 5 19

>> size(d)

ans =

2 3

Dimension de la matrice

lignes colonnes

Pour un vecteur :>> vec = [5 6 9];>> length(vec)ans =

3

Page 39: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’opérateur « : »

● Permet de créer un vecteur = une série numérique

● Signifie « à »

vec = début : fin>> v = 1:10

v =1 2 3 4 5 6 7 8 9 10 L’incrément est de 1

vec = début : incrément : fin>> w = 2:.5:4

w =2.0000 2.5000 3.0000 3.5000 4.0000

>> z = 20:-2:15

z =20 18 16 14

Les crochets ne sont pas

nécessaires

Page 40: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’adressage >> d = [3 2 0 ; -4 5 19]d =

3 2 0-4 5 19

d (i, j)

Indice de la ligne

d (i, j)

Indice de colonne

Page 41: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’adressage

− 1954

023Indice de la ligne

d (i, j)

Indice de colonne

�d(2,2) ?

�Accéder à l’élément 0

�Extraire la première ligne

�Extraire la troisième colonne

�Créer à partir de d le vecteur (-4 19)

�Extraire les colonnes 2 et 3

Page 42: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’adressage

− 1954

023Indice de la ligne

d (i, j)

Indice de colonne

�d(2,2) ?

�Accéder à l’élément 0

�Extraire la première ligne

�Extraire la troisième colonne

�Créer à partir de d le vecteur (-4 19)

�Extraire les colonnes 2 et 3

d(2,2)=5

d(1,3)

d(1,:)

d(:,3)

d(2,[1 3])

d(:,2:3) ou d(:,2:end)

Page 43: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’adressage

− 1954

023Indice de la ligne

d (i, j)

Indice de colonne

Un seul indice

d (k)

�Créer le vecteur (-4 0) à partir de d

(indexation linéaire ou concaténation)

L’indexation linéaire des matrices

d(1) d(3) d(5)

d(2) d(4) d(6)

Page 44: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’adressage

− 1954

023Indice de la ligne

d (i, j)

Indice de colonne

Un seul indice

d (k)

�Créer le vecteur (-4 0) à partir de d

(indexation linéaire ou concaténation)

L’indexation linéaire des matrices

d(1) d(3) d(5)

d(2) d(4) d(6)

d([2 5]) ou [d(2,1) d(1,3)]

Page 45: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

>> d(1,1)

Les matrices

� L’adressage

Indice de la ligne

>> d = [3 2 0 ; -4 5 19]d =

3 2 0-4 5 19d (i, j)

Indice de colonne

>> d(1,1)

ans =3

>> d(2,3)

ans =19

L’élément de la 1ère ligne, 1ème colonne

L’élément de la 2ème ligne, 3ème

colonne

Page 46: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

>> d(:,1)

ans =3

- 4

Tous les éléments de la première

colonne

Les matrices

� L’adressage d =3 2 0

-4 5 19● L’opérateur « : » seul désigne tous les

indices

3- 4

>> d(2,:)

ans =-4 5 19

Tous les éléments de la 2ème ligne

Page 47: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

>> d(2,2:3)

ans =5 19

Extrait les éléments de la 2ème ligne

entre la colonne 2 et 3

Les matrices

� L’adressage d =3 2 0

-4 5 19

>> d(1,[1 3])

ans =3 0

>> d(:,2:end)

ans =2 05 19

Extrait les éléments en 1ème et 3ème

colonne au niveau de la 1ère ligne

Extrait toutes les lignes situées entre la

2ème et la dernière colonne

Page 48: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

>> vdata = [1;7;9]

vdata =179

>> vdata(2)

Les matrices

� L’adressage

>> vdata(2)

ans =7

>> d(4:6)

ans =5 0 19

Pour les vecteurs, un seul indice

nécessaire

L’indexation linéaire des matrices

d(1) d(3) d(5)

d(2) d(4) d(6)

d =3 2 0

-4 5 19

Page 49: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

>> d(3,1)

Index exceeds matrix dimensions.

>> d(0,0)

Les matrices

� Les erreurs d’adressage d =3 2 0

-4 5 19

>> d(0,0)

Index exceeds matrix dimensions.

>> d(-1,2)

Index exceeds matrix dimensions.

>> d(7)

Index exceeds matrix dimensions.

Page 50: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� L’indexation logique

>> d(d>2)

ans =35

Sort les éléments qui satisfont la

comparaison d>2

d =3 2 0

-4 5 19d (condition)

519

>> d(d>1 & d<4)

ans =

32

>> d(d<=0) = 42

d =3 2 42

42 5 19

Change la valeur des éléments

inférieurs ou égal à 0 en 42

Page 51: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Un cas pratique

>> clear all

>> load megdata

>> whosName Size Bytes Classtdata 1x6782 54256 double xdata 1x6782 54256 double

Dans megdata.mat sont stockés les

vecteurs tdata (le temps) et xdata

(l’amplitude)

>> figure

>> plot(tdata,xdata, '+' )

Ouvre une nouvelle figure

Trace la courbe xdata = f(tdata)

plot(x_abscisse,y_ordonnee,options)

Options sur le type de tracé :

marqueur +

Page 52: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Un cas pratique (suite)

>> tpart = tdata(tdata>4 & tdata<8);

>> xpart = xdata(tdata>4 & tdata<8);

>> whos x*

Indexation logique

On recherche les

indices pour des

temps compris

entre 4 et 8 s

>> whos x*Name Size Bytes Classxdata 1x6782 54256 double xpart 1x2713 21704 double

>> figure>> plot(tdata,xdata)>> hold on, plot(tpart,xpart, 'r' )

>> print(gcf, '-djpeg100' , 'thegraph' )

hold on : on conserve

les tracés précédents

sur la figure

Page 53: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� La fonction find

>> [indi,indj] = find(d > 4);

indi =22

indj =

Retourne les indices des lignes et

colonnes satisfaisant à la condition

spécifiée en argument d’entrée

d =3 2 0

-4 5 19

● Pour une matrice

indj =23

>> ind = find(xdata > max(xdata)*0.9);

>> plot(tdata(ind),xdata(ind), 'gx' )

spécifiée en argument d’entrée

Donne les indices des valeurs de xdata

supérieures à 90% de la valeur

maximale

● Pour une matrice � simple vecteur

Page 54: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Les opérations A =3 2 01 6 30 0 1

B =-1 6 1

3 2 41 2 3

● Transposition

● Calcul matriciel

>> A'

>> A*B >> A/B>> A*B(1,:)

● Opérations élément par élément

>> A*3 >> A/3 >> A^2>> A.*B >> A./B >> A.^B>> A-B >> A+B >> A-2

>> A*B >> A/B>> A*B(1,:)

Page 55: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Concaténation

● Horizontale

>> [A B]

ans =

3 2 0 -1 6 11 6 3 3 2 40 0 1 1 2 3

A =3 2 01 6 30 0 1

B =-1 6 1

3 2 41 2 3

● Verticale

0 0 1 1 2 3

>> [A;B]

ans =

3 2 01 6 30 0 1

-1 6 13 2 41 2 3

Page 56: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Erreurs de concaténation A =3 2 01 6 30 0 1

C =-1 6 1

D =4

>> [A C]Error using horzcatDimensions of matrices beingconcatenated are not consistent.

>> [A;C]43ans =

3 2 01 6 30 0 1

-1 6 1

>> [A;D]Error using vertcatDimensions of matrices beingconcatenated are not consistent.

Page 57: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les matrices

� Les opérations sur les vecteurs

xd=[3 2 0 1 6 3 0 1];● Somme d’un vecteur

● Moyenne

>> sum(xd)ans =

16

>> mean( xd ) Sur les matrices, ces fonctions

● Valeur min et max

>> min(xd)ans =

0

>> max(xd)ans =

6

>> mean( xd )ans =

2

Sur les matrices, ces fonctions

opèrent par défaut sur chaque

colonne>> c = [1 2 3; 3 4 5];>> mean( c )ans =

2 3 4

Page 58: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

La chaîne de caractère>> onelet = 'Z' ;

>> vch = 'hello'vch =hello

>> whos vch

Name Size Bytes Classvch 1x5 10 char

' permet de définir les objets de type

chaîne de caractères

La chaîne correspond à un vecteur

ligne

>> vch(5)ans =o

>> str = [vch, ' world' ]str =hello world

>> 'a' : 'd'ans =abcd

L’adressage et la concaténation se font

comme pour les matrices de nombre

Page 59: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

La structure

� Des bases de données

>> S.nom = 'toto' ;>> S.code = '0+0' ; Définition d’une

nom_structure.champ.sous_champ…

● Chaque élément est rangé dans une arborescence de champs

● Ces éléments sont de tout type (matrice, chaîne de caractère,

structure, cellule…)

>> S.code = '0+0' ;>> S.age = 10 ;>> S.notes.geo = [9 8 7] ;>> S.notes.math = [0 1 2] ;>> S.notes.fran = [7 7 8] ;

Définition d’une

structure S

>> S.notes.math(2)ans =

1

>> S = nom: 'toto'

code: '0+0'age: 10

notes: [1x1 struct]

>> S.notesans=

geo: [9 8 7]math: [0 1 2]fran: [7 7 8]

Page 60: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

La cellule

� Un conteneur polyvalent

>> mysupercel = { 'hello' , S, [2 4 5;3 4 3], {2; 'blabla' }};

mysupercel = 'hello' [1x1 struct ] [2x3 double] {2x1 cell }

L’accolade permet de définir la cellule

● Un tableau rassemblant des éléments de tous types

'hello' [1x1 struct ] [2x3 double] {2x1 cell }

>> mysupercel{2}ans =

nom: 'toto'code: '0+0'

age: 10notes: [1x1 struct]

>> mysupercel{3}ans =

2 4 53 4 3

Et d’extraire l’objet stocké dans la

cellule

Astuce : pour afficher rapidement le nom

de la variable mysupercel stockée en

mémoire, on a tapé les première lettres

« mys » puis la touche tabulation

Page 61: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les scripts & fonctions

� Des fichiers-texte .m

�Créer ses propres programmes pour le traitement

spécifique de ses données

�Répétition d’un même ensemble d’instructions sur un

lot de données (batch)

� Programmation facilitée grâce aux fonctions des

toolboxs & à ses propres fonctions

Page 62: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Les scripts & fonctions

� Un script

● Un fichier texte qui contient une série d’instructions Matlab

● Les instructions sont exécutées ligne après ligne

● Pour lancer l’exécution, il suffit d'entrer le nom du script sur la console

● Les variables créées dans ce fichier sont conservées dans le workspace

� Une fonction

● Le fichier texte commence par l'instruction function

● Effectue une suite d'instruction en fonction des arguments d'entrée

● Retourne un ou plusieurs résultats

● Les variables créées dans ce fichier sont invisibles dans le workspace

Page 63: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB

• Une boîte à outil Matlab

• Une collection de fonctions pour le traitement des données EEG et MEG:

• Prétraitement des données Prétraitement des données

• Méthodes de moyennage standards.

• Analyse des composantes indépendantes (ICA)

• Analyse temps fréquence.

• Equipé d’une interface graphique:• Interactive.

• Flexible.

Page 64: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB

Aussi…

• Possibilité d’accéder à TOUTES les données.

• La possibilité de manipuler les données est • La possibilité de manipuler les données est

limitée par notre connaissance de Matlab et

du traitement du signal.

Page 65: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Objectifs de cette présentation

• Comment les données principales sont organisées

dans EEGLAB

• Comment accéder à ces données.• Comment accéder à ces données.

• Leur manipulation en utilisant des fonctions de

Matlab de base.

• Comment visualiser les données graphiquement.

Page 66: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEG: Pour commencer

• Dans la fenêtre de commande tapez:

>> eeglab

Notez: « No current dataset ». Notez: « No current dataset ».

• Pour importer des données brutes - format .bdf (biosemi

data file):File – Import data – Using EEGLAB functions and Plugins – From Biosemi BDF file

Page 67: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

« ALLAEEG »: contenant multiple variables EEGFenêtre principale

« EEG »: la variable de base

Page 68: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

« click !»

Page 69: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

Cliquez sur l’onglet « Datasets » pour voir tout les « datasets » ouverts.

Le « Dataset » marqué avec un ✔ est le « Dataset » actuel.

La variable « EEG »: contient tout les informations sur le « dataset » actuel.

La variable « ALLEEG »: stocke tout les variables « EEG » de tout les « datasets »

ouverts.

Page 70: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Structure des données• La variable EEG:

• Contient toutes les informations sur le « dataset » actuel.

• Pour accéder à la variable EEG dans la fenêtre de commande taper:

>>EEG

La variable « EEG » est une structure:

Un type de données Matlab particulier dans lequel:

• Des données correspondantes sont regroupées dans des

« containers » qu’on appelle des « fields ».

• Chaque « field » peut contenir des types de données diverses:

caractères (lettres), numéros.

Page 71: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

La « EEG » structure

Page 72: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Structure des données• Le variable ALLEEG:

– Une variable contenant tous les « datasets » actuellement dans le workspace.

– Donc, il se compose de plusieurs structures « EEG ».

– Pour accéder la variable EEG dans la fenêtre de commande taper

>>ALLEEG

La variable « ALLEEG »:

un structure de dimension 1 x2 :

dataset1 dataset2

fieldname1 fieldname1

fieldname2 fieldname2

fieldname3 fieldname3

fieldname4 fieldname4

fieldname5 fieldname5

… …

fieldnameX fieldnameX

Page 73: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des données

Activité 1:

A partir de la variable EEG, faire un plot qui compare deux électrodes (le signal EEG est continu)

On a besoin, principalement de…?

La variable « EEG » du « dataset » actuel La fonction « plot()».

On aura besoin de quel « field » de la structure « EEG »?

Comment accéder à ce « field »?

Comment accéder aux électrodes individuelles dans ce « field » ?

Pour faire le plot, on aura besoin d’autres données contenues dans le structure « EEG »?

Page 74: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des données

Pour résumer I:

Le structure du field « data »:

E = électrode

S = signal

N = nombre d’échantillons du signal

E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN

E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN

E72,S1 E72,S2 E72,S3 E72,S4 … E72,SN

Accéder au field « data » à partir du structure « EEG »:

EEG data >> EEG.data ;

A partir du field « data » accéder au signal de la 4ième électrode:

EEG.data ( 4 , : ) >> EEG.data(4,:);

: = toute la ligne/colonne

Page 75: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des données

Pour résumer cont.:

Faire un plot – temps (x-axes) et signal EEG (y-axis):

plot ( x-axis, y-axis) ���� plot (EEG.times , EEG.data (4 , : ) );

Faire un plot des signal de la 2ième au 5ième électrode:

E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN

E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN

E72,S1 E72,S2 E72,S3 E72,S4 … E72,SN

Faire un plot des signal de la 2ième au 5ième électrode:

EEG.data(2 à 4, : ) …

>> EEG.data(2 : 4, : );

Page 76: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des donnéesActivité 2:

A partir du variable EEG, faire un plot du signal « baseline » d’une électrode (-200ms à 0ms) (le signal EEG est continu)

On a besoin, principalement de…?

La variable « EEG » du « dataset » segmentée La fonction « plot ».

Le field « times ».Le field « data ». Le field « times ».Le field « data ».

A partir du field « times », comment accéder à un intervalle de temps?

Comment les données segmentées sont organisées dans le field « data »?

A partir du field « data », comment accéder à une électrode dans un epoch particulier?

Page 77: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des donnéesPour résumer II:

L’organisation des données segmentées dans le field « data »

EEG.data ( électrodes, signal, epochs)E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN

E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN

E72,S1 E72,S2 E72,S3 E72,S4 …

E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

EEG.times

E72,S1 E72,S2 E72,S3 E72,S4 …

E72,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN

E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN

E72,S1 E72,S2 E72,S3 E72,S4 …

E72,SN

E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN

E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN

E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN

E72,S1 E72,S2 E72,S3 E72,S4 … E72,SNEpoch 1

Epoch 2

Epoch n

t1 t2 t3 t4 … tN

size(EEG.data, 2) == size(EEG.times, 2)

Page 78: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

EEGLAB: Manipulation des donnéesPour résumer II:

On cherche des éléments du field « times » qui correspondent au baseline

(-200ms à 0ms)

La fonction find(X):

• Si X est un matrice, la fonction find(X) donne les indices des éléments non-zéro de X• Si X est un matrice, la fonction find(X) donne les indices des éléments non-zéro de X

• X peut être aussi une expression logique – X > 10 ou X ==14

• i = find (X ==14) � les indices des éléments dans X qui égalent à 14 attribués à la

variable i.

Donc…

BL_i = find ( EEG.times < = 0 ) ; % BL_i contient des indices correspondant au baseline

BL = EEG.times ( BL_i) ; % BL est la variable contenant des points temporels.

Bl_sig = EEG.data ( 4, Bl_sig, 2); % baseline signal du 4ième électrode, 2ième epoch

Page 79: Traitement des données avec Matlab Une introduction · Une bibliothèque de fonctions intégrées Des centaines de commandes prédéfinies pour effectuer des calculs plus ou moins

� Analyse fréquentielle

� Automatiser le traitement d’un lot de données

� Extraire le contenu d’un fichier texte

Proposition de fiches pratiques &

de modèles de scripts

� Extraire le contenu d’un fichier texte

� Améliorer l’apparence d’une figure

� …

>> 'A venir sur le site du CREx'