Vous êtes sur la page 1sur 79

Traitement des données avec Matlab

Une introduction
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
Création d’applications

● Facile à apprendre, simple à utiliser

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


académique ; ingénierie, sciences, économie…)
% Cleve Moler, concepteur
● « Equivalents » gratuits : GNU Octave , Scilab, SciPy
du langage Matlab (fin
70’s) en Fortran
Le concept Matlab : les toolboxs
● Une bibliothèque de fonctions intégrées

Une fonction :
▸ un fichier texte contenant une série d’instructions
▸ 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
Le concept Matlab : les toolboxs
● 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,


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
Le concept Matlab : les toolboxs
● Des toolboxs supplémentaires spécialisées (payantes), fonctionnalités avancées

Signal Processing
Image Processing
Statistics
Wavelet

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

? ?
Prise en main
L’interface
Prise en main
L’interface

L’invite de commandes :
exécution de calculs & lancement de programmes
Prise en main
L’interface

Des volets supplémentaires éventuels


(historique des commandes, liste des
variables, aperçu du dossier courant)
Prise en main
L’interface
L’aide
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
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
Prise en main
L’invite de commande en pratique
Prise en main
Les calculs élémentaires

● En mode « calculatrice » : on écrit le calcul désiré 32 × (2 + 5)


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

Symbole de
l’invite de Opérateurs courants :
commande ^ : exponentiation
* : multiplication
/ : division

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


Prise en main
Les calculs élémentaires

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

>> 3^2*(2+5)/(5-2) Entrée

ans =
21
Résultat
assigné à la
variable ans
(answer)
Prise en main
Les calculs élémentaires

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

>> 3^2*(2+5)/(5-2)
ans =
21
Résultat
assigné à la >> ans/2
variable ans
(answer)
ans =
10.5000 Valeur décimale : « . »
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)
Prise en main
Les variables

● Affecter une valeur à une variable

Entrée
>> a = 35.6
a =
35.6000

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


Prise en main
Les variables

● Affecter une valeur à une variable

>> a = 35.6
a =
35.6000
Pas
d’affichage
>> b = 273.15;
>>
Prise en main
Les variables

● Affecter une valeur à une variable

>> a
a =
35.6000 a et b sont conservées en
mémoire = dans le
Workspace
>> b
b =
273.15
Prise en main
Les variables

● Lister les variables créées dans le workspace

>> whos
Name Size Bytes Class Attributes

a 1x1 8 double
b 1x1 8 double
Prise en main
Les variables

● Affecter une valeur à une variable

>> tK = a + b Créer une nouvelle


variable à partir des
tK = variables déjà définies

308.7500
>> a = 32; Définir une nouvelle
valeur pour a
Prise en main
Les variables

● Affecter une valeur à une variable


Pour afficher à
nouveau l’équation
écrite précédemment,
>> tK = a + b utiliser la flèche
directionnelle ↑ du
tK = clavier

305.1500 Nouvelle valeur de tK


Prise en main
Les variables
−6
● La notation en puissance de 10 2,16 × 10
>> pot = 2.16*10^(-6)
pot =
2.1600e-06 Notation
équivalente

>> pot = 2.16e-6


pot =
2.1600e-06
Prise en main
Les variables
Les variables du workspace sont effacées à la fermeture de Matlab

● Pour les sauvegarder :

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


le dossier courant
Variables à
Nom du fichier
stocker

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


suppression :
Charger les variables
>> load myvar dans le workspace
Prise en main
Les variables

● Pour effacer certaines variables :

>> clear a b tK

● Pour effacer tout le workspace :

>> clear all


Prise en main
Des constantes prédéfinies
>> pi Pour afficher davantage de décimales :
>> format long
ans = >> pi
3.1416 ans =
3.141592653589793

>> i
L’unité imaginaire pour définir les
ans = nombres complexes (i ou j)
>> i^2
0.0000 + 1.0000i ans =
-1
>> 0/0
ans = Not-A-Number : résultat numérique
d’une opération non-définie
NaN
Prise en main
Des fonctions prédéfinies
>> cos(2*pi) Les fonctions trigonométriques :
cos, sin, tan,
ans =
Inverses : asin, acos, …
1 Hyperboliques : sinh, acosh…

>> sqrt(25)
Des fonctions mathématiques :
ans = sqrt : racine carrée
log, log10, exp, abs, sign
5

>> round(pi*2)
ans = Des fonctions d’arrondis :
round : entier le plus proche
6
floor, ceil, fix
Prise en main
Des fonctions prédéfinies
>> figure Des fonctions pour la visualisation

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

Options de
Valeur(s) en Valeur mise en
abscisse associées en forme
ordonnée

hist (histogramme),plot3 (tracé 3D),


surf (surface),image (images jpeg…)
>> sphere(16)

… des milliers de fonctions prédéfinies


Prise en main
La fonction help
Utilité, arguments d'entrées,
>> help ceil options, résultats

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
doc ceil

>> doc

Recherche de
fonctionnalités par
mot-clefs
Les matrices
L’élément de base en Matlab (MATrix LABoratory)

● Presque tout est matrice (tableau de valeurs)


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 !


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

● Presque tout est matrice (tableau de valeurs)

n colonnes
m lignes
a(1,1) a(1,2) …. a(1,n)
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)

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)
Les matrices
L’élément de base en Matlab (MATrix LABoratory)

Un nombre : matrice de dimension 1 x 1

a(1,1)

Un vecteur en ligne : 1 x n n colonnes


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

Un vecteur en colonne : m x 1
a(1,1)
m lignes

a(2,1)

a(m,1)
Les matrices
L’élément de base en Matlab (MATrix LABoratory)

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

n colonnes

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


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

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

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)
Les matrices
Quelques exemples concrets

Un nombre (scalaire) : matrice de dimension 1 x 1 1,56 × 10 6

Un vecteur en ligne : 1 x 4 (29 5 336 7 )

 2,567 
Un vecteur en colonne : 2 x 1  
 1,189 
 0 2 36 
 
5 8 2 
Une matrice multidimentionnelle : 2 x 3 x 3 12 24 3 
 
1 − 3 2
 3 2 0
 
− 4 5 19 
Les matrices
L’affectation
Un seul nombre
>> a = 1.56e6;
1,56 × 10 6

>> b = [29 5 336 7] Des crochets pour définir la matrice


b =
Les espaces séparent les éléments du
29 5 336 7 vecteur ligne. Ou les virgules :
>> b = [29,5,336,7];

(29 5 336 7 )

>> c = [2.567 ; 1.189] Les ; séparent les éléments du vecteur


colonne
c =
2.5670  2,567 
1.1890  
 1,189 
Les matrices
L’affectation
 3 2 0
 
 − 4 5 19 
>> d = [3 2 0 ; -4 5 19] Les ; séparent les lignes d’une matrice

d =
3 2 0
-4 5 19

>> size(d) Dimension de la matrice


ans = lignes colonnes

2 3 Pour un vecteur :
>> vec = [5 6 9];
>> length(vec)
ans =
3
Les matrices
L’opérateur « : »
● Permet de créer un vecteur = une série numérique
● Signifie « à »

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


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

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


w =
2.0000 2.5000 3.0000 3.5000 4.0000
>> z = 20:-2:15
Les crochets ne sont pas
z = nécessaires
20 18 16 14
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 Indice de colonne
Les matrices
d (i, j)
L’adressage
Indice de la ligne Indice de colonne

 3 2 0
 
 − 4 5 19 
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
Les matrices
d (i, j)
L’adressage
Indice de la ligne Indice de colonne

 3 2 0
 
 − 4 5 19 
d(2,2) ? d(2,2)=5
Accéder à l’élément 0 d(1,3)
Extraire la première ligne d(1,:)
Extraire la troisième colonne d(:,3)
Créer à partir de d le vecteur (-4 19) d(2,[1 3])
Extraire les colonnes 2 et 3 d(:,2:3) ou d(:,2:end)
Les matrices
d (i, j)
L’adressage
Indice de la ligne Indice de colonne

 3 2 0
 
 − 4 5 19 
L’indexation linéaire des matrices

d (k)
d(1) d(3) d(5)
d(2) d(4) d(6) Un seul indice

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


(indexation linéaire ou concaténation)
Les matrices
d (i, j)
L’adressage
Indice de la ligne Indice de colonne

 3 2 0
 
 − 4 5 19 
L’indexation linéaire des matrices

d (k)
d(1) d(3) d(5)
d(2) d(4) d(6) Un seul indice

Créer le vecteur (-4 0) à partir de d d([2 5]) ou


(indexation linéaire ou concaténation) [d(2,1) d(1,3)]
Les matrices
L’adressage >> d = [3 2 0 ; -4 5 19]
d =
d (i, j) 3 2
-4 5 19
0

Indice de la ligne Indice de colonne

>> d(1,1)
L’élément de la 1ère ligne, 1ème colonne
ans =
3

>> d(2,3)
L’élément de la 2ème ligne, 3ème
ans = colonne
19
Les matrices
L’adressage d =
3 2 0
● L’opérateur « : » seul désigne tous les -4 5 19
indices

>> d(:,1)
Tous les éléments de la première
ans = colonne
3
-4

>> d(2,:) Tous les éléments de la 2ème ligne


ans =
-4 5 19
Les matrices
L’adressage d =
3 2 0
-4 5 19

>> d(2,2:3)
Extrait les éléments de la 2ème ligne
ans = entre la colonne 2 et 3
5 19

>> d(1,[1 3])


Extrait les éléments en 1ème et 3ème
ans = colonne au niveau de la 1ère ligne
3 0

>> d(:,2:end)
Extrait toutes les lignes situées entre la
ans = 2ème et la dernière colonne
2 0
5 19
Les matrices
L’adressage
>> vdata = [1;7;9]
vdata =
1
7
9
>> vdata(2)
Pour les vecteurs, un seul indice
ans = nécessaire
7

>> d(4:6)
L’indexation linéaire des matrices
ans =
5 0 19

d =
d(1) d(3) d(5)
3 2 0
-4 5 19 d(2) d(4) d(6)
Les matrices
Les erreurs d’adressage d =
3 2 0
-4 5 19

>> d(3,1)
Index exceeds matrix dimensions.
>> d(0,0)
Index exceeds matrix dimensions.
>> d(-1,2)
Index exceeds matrix dimensions.
>> d(7)
Index exceeds matrix dimensions.
Les matrices
L’indexation logique d =
3 2 0
-4 5 19
d (condition)
>> d(d>2)
Sort les éléments qui satisfont la
ans = comparaison d>2
3
5
19
>> d(d>1 & d<4)
ans =
3
2
>> d(d<=0) = 42 Change la valeur des éléments
inférieurs ou égal à 0 en 42
d =
3 2 42
42 5 19
Les matrices
Un cas pratique
>> clear all Dans megdata.mat sont stockés les
vecteurs tdata (le temps) et xdata
>> load megdata
(l’amplitude)
>> whos
Name Size Bytes Class
tdata 1x6782 54256 double
xdata 1x6782 54256 double

>> figure Ouvre une nouvelle figure

>> plot(tdata,xdata,'+') Trace la courbe xdata = f(tdata)


plot(x_abscisse,y_ordonnee,options)
Options sur le type de tracé :
marqueur +
Les matrices
Un cas pratique (suite)

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


On recherche les
>> xpart = xdata(tdata>4 & tdata<8);
indices pour des
temps compris
entre 4 et 8 s

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

>> figure hold on : on conserve


>> plot(tdata,xdata) les tracés précédents
>> hold on, plot(tpart,xpart,'r') sur la figure

>> print(gcf,'-djpeg100','thegraph')
Les matrices
La fonction find
● Pour une matrice d =
3 2 0
>> [indi,indj] = find(d > 4); -4 5 19

indi =
2 Retourne les indices des lignes et
2 colonnes satisfaisant à la condition
indj = spécifiée en argument d’entrée
2
3

● Pour une matrice simple vecteur

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


Donne les indices des valeurs de xdata
supérieures à 90% de la valeur
maximale
>> plot(tdata(ind),xdata(ind),'gx')
Les matrices
Les opérations A =
3 2 0
● Transposition 1 6 3
0 0 1
>> A'
B =
-1 6 1
● Calcul matriciel 3 2 4
1 2 3
>> 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
Les matrices
Concaténation A =
3 2 0
● Horizontale 1 6 3
>> [A B] 0 0 1

ans = B =
-1 6 1
3 2 0 -1 6 1 3 2 4
1 6 3 3 2 4 1 2 3
0 0 1 1 2 3

● Verticale
>> [A;B]
ans =
3 2 0
1 6 3
0 0 1
-1 6 1
3 2 4
1 2 3
Les matrices
Erreurs de concaténation A =
3 2 0
1 6 3
>> [A C] 0 0 1
Error using horzcat
Dimensions of matrices being C =
concatenated are not consistent. -1 6 1

>> [A;C] D =
4
ans = 3
3 2 0
1 6 3
0 0 1
-1 6 1
>> [A;D]
Error using vertcat
Dimensions of matrices being
concatenated are not consistent.
Les matrices
Les opérations sur les vecteurs
● Somme d’un vecteur xd=[3 2 0 1 6 3 0 1];

>> sum(xd)
ans =
16

● Moyenne
>> mean(xd) Sur les matrices, ces fonctions
ans = opèrent par défaut sur chaque
2
colonne
>> c = [1 2 3; 3 4 5];
>> mean( c )
● Valeur min et max ans =
2 3 4
>> min(xd)
ans =
0
>> max(xd)
ans =
6
La chaîne de caractère
>> onelet = 'Z';

>> vch = 'hello' ' permet de définir les objets de type


vch = chaîne de caractères
hello

>> whos vch

Name Size Bytes Class La chaîne correspond à un vecteur


vch 1x5 10 char ligne

>> vch(5)
ans = L’adressage et la concaténation se font
o
comme pour les matrices de nombre
>> str = [vch, ' world']
str =
hello world

>> 'a':'d'
ans =
abcd
La structure
Des bases de données
● 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…)
nom_structure.champ.sous_champ…

>> S.nom = 'toto';


>> S.code = '0+0'; Définition d’une
>> S.age = 10 ; structure S
>> S.notes.geo = [9 8 7] ;
>> S.notes.math = [0 1 2] ;
>> S.notes.fran = [7 7 8] ;

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


nom: 'toto' ans= ans =
code: '0+0' geo: [9 8 7] 1
age: 10 math: [0 1 2]
notes: [1x1 struct] fran: [7 7 8]
La cellule
Un conteneur polyvalent
● Un tableau rassemblant des éléments de tous types

L’accolade permet de définir la cellule


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

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

>> mysupercel{2}
ans = Et d’extraire l’objet stocké dans la
nom: 'toto' cellule
code: '0+0'
age: 10
notes: [1x1 struct]
Astuce : pour afficher rapidement le nom
>> mysupercel{3} de la variable mysupercel stockée en
ans = mémoire, on a tapé les première lettres
2 4 5 « mys » puis la touche tabulation
3 4 3
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
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
EEGLAB
• Une boîte à outil Matlab

• Une collection de fonctions pour le traitement


des données EEG et MEG:
• 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.
EEGLAB
Aussi…
• Possibilité d’accéder à TOUTES les données.

• La possibilité de manipuler les données est


limitée par notre connaissance de Matlab et
du traitement du signal.
Objectifs de cette présentation
• Comment les données principales sont organisées
dans EEGLAB

• Comment accéder à ces données.

• Leur manipulation en utilisant des fonctions de


Matlab de base.

• Comment visualiser les données graphiquement.


EEG: Pour commencer
• Dans la fenêtre de commande tapez:
>> eeglab

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
Fenêtre principale « ALLAEEG »: contenant multiple variables EEG

« EEG »: la variable de base


« click !»
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.
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.
La « EEG » structure
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

dataset1 dataset2
La variable « ALLEEG »:
fieldname1 fieldname1
un structure de dimension 1 x2 :
fieldname2 fieldname2
fieldname3 fieldname3
fieldname4 fieldname4
fieldname5 fieldname5


fieldnameX fieldnameX
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 »?
EEGLAB: Manipulation des données
Pour résumer I:
E1,S1 E1,S2 E1,S3 E1,S4 … E1,SN
Le structure du field « data »: E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN
E = électrode E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN
S = signal E4,S1 E4,S2 E4,S3 E4,S4 … E4,SN
N = nombre d’échantillons du signal …
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
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


EEG.data(2 à 4, : ) … 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

>> EEG.data(2 : 4, : );
EEGLAB: Manipulation des données
Activité 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 « data ». Le field « times ».

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?
EEGLAB: Manipulation des données
Pour résumer II:
L’organisation des données segmentées dans le field « data »

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


EEG.data ( électrodes, signal, epochs) E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN
E3,S1 E3,S2 E3,S3 E3,S4 … E3,SN
E1,S1E4,S1
E1,S2E4,S2
E1,S3E4,S3
E1,S4E4,S4 … E4,SN
… E1,SN
E2,S1… E2,S2 E2,S3 E2,S4 … E2,SN
E3,S1E72,S1
E3,S2E72,S2
E3,S3E72,S3
E3,S4E72,S4 …
… E3,SN
E1,S1 E4,S1E72,SN
E1,S2 E4,S2
E1,S3 E4,S3
E1,S4 E4,S4 … E4,SN
… E1,SN Epoch n

E2,S1 E2,S2 E2,S3 E2,S4 … E2,SN
E3,S1 E72,S1
E3,S2 E72,S2
E3,S3 E72,S3
E3,S4 E72,S4
… E3,SN…
E4,S1 E72,SN
E4,S2 E4,S3 E4,S4 … E4,SN
… Epoch 2
E72,S1 E72,S2 E72,S3 E72,S4 … E72,SN
Epoch 1

EEG.times t1 t2 t3 t4 … tN

size(EEG.data, 2) == size(EEG.times, 2)
EEGLAB: Manipulation des données
Pour 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
• 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
Proposition de fiches pratiques &
de modèles de scripts

Analyse fréquentielle

Automatiser le traitement d’un lot de données

Extraire le contenu d’un fichier texte

Améliorer l’apparence d’une figure

>> 'A venir sur le site du CREx'

Vous aimerez peut-être aussi