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
% 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
● 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
● 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…
● 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
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 :
Prise en main
L’interface
Des volets supplémentaires éventuels
(historique des commandes, liste des variables, aperçu du dossier courant)
L’aide
Prise en main
L’interface
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
Prise en main
Prise en main
Les calculs élémentaires
>> 3^2*(2+5)/(5-2)
Symbole de
●
En mode « calculatrice » : on écrit le calcul désiré
(
)
2
5
5
2
3
2−
+
×
Opérateurs courants : ^ : exponentiation * : multiplication / : division Symbole de l’invite de commandePrise 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 =
21
Résultat assigné à la variable ans (answer)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)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
>> a = 35.6
a =
Entrée
a =
35.6000
Prise en main
●
Affecter une valeur à une variable
>> a = 35.6
a =
Les variables
a =
35.6000
>> b = 273.15;
>>
Pas d’affichagePrise 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 WorkspacePrise 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
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
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 clavierLes variables
305.1500
clavier Nouvelle valeur de tKPrise en main
●
La notation en puissance de 10
>> pot = 2.16*10^(-6)
pot =
Les variables
6
10
16
,
2
×
−
2.1600e-06
>> pot = 2.16e-6
pot =
2.1600e-06
Notation équivalentePrise 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 fichier Variables à
Les variables
>> load myvar
Charger les variables dans le workspace
●
Pour les récupérer lors d’une nouvelle session ou après
suppression :
Nom du fichier Variables à stocker
Prise en main
>> clear a b tK
●
Pour effacer certaines variables :
Les variables
>> clear
all
Prise en main
Des constantes prédéfinies
>> pi
ans =
3.1416
>> i
Pour afficher davantage de décimales :
>> format long >> pi
ans =
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^2 ans =
-1
Not-A-Number : résultat numérique d’une opération non-définie
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
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
abscisse associées en Valeur
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
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 browser
doc ceil
>> doc
Recherche de fonctionnalités par
Les matrices
L’élément de base en Matlab
(MATrix LABoratory)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)a(1,1) a(1,2) …. a(1,n)
a(2,1) a(2,2) …. a(2,n)
n colonnes
m
l
ig
n
e
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
l
ig
n
e
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)
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 ig n e s a(1,1) a(2,1) ⁞ a(m,1)
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 ig n e s
Un nombre (scalaire) : matrice de dimension
1 x 1
Un vecteur en ligne :
1 x 4
610
56
,
1
×
(
29
5
336
7
)
Les matrices
Quelques exemples concrets
Un vecteur en colonne :
2 x 1
Une matrice multidimentionnelle :
2 x 3 x 3
−
4
5
19
0
2
3
−
3
2
1
3
24
12
2
8
5
36
2
0
189
,
1
567
,
2
6
10
56
,
1
×
>> a = 1.56e6;
>> b = [29 5 336 7]
b =
29 5 336 7
Les 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
(
29
5
336
7
)
189
,
1
567
,
2
29 5 336 7
>> c = [2.567 ; 1.189]
c =
2.5670
1.1890
vecteur ligne. Ou les virgules :
>> b = [29,5,336,7];
Les ; séparent les éléments du vecteur colonne
−
4
5
19
0
2
3
>> 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 = 3Les 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 1vec = 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
Les matrices
L’adressage
>> d = [3 2 0 ; -4 5 19] d = 3 2 0 -4 5 19d (i, j)
Indice de la ligned (i, j)
Indice de colonneLes matrices
L’adressage
−
4
5
19
0
2
3
Indice de la ligned (i, j)
Indice de colonne
d(2,2) ? Accéder à l’élément 0 Extraire la première ligne Extraire la troisième colonneCréer à partir de d le vecteur (-4 19) Extraire les colonnes 2 et 3
Les matrices
L’adressage
−
4
5
19
0
2
3
Indice de la ligned (i, j)
Indice de colonne
d(2,2) ? Accéder à l’élément 0 Extraire la première ligne Extraire la troisième colonneCré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)
Les matrices
L’adressage
−
4
5
19
0
2
3
Indice de la ligned (i, j)
Indice de colonne Un seul indiced (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)
Les matrices
L’adressage
−
4
5
19
0
2
3
Indice de la ligned (i, j)
Indice de colonne Un seul indiced (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)]
>> 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
>> 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
>> 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 0
5 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
>> vdata = [1;7;9]
vdata =
1
7
9
>> 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
>> 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)
Les matrices
L’indexation logique
>> d(d>2)
ans =
3
5
Sort les éléments qui satisfont la comparaison d>2 d = 3 2 0 -4 5 19
d (condition)
5
19
>> d(d>1 & d<4)
ans =
3
2
>> d(d<=0) = 42
d =
3 2 42
42 5 19
Change la valeur des éléments inférieurs ou égal à 0 en 42
Les matrices
Un cas pratique
>> clear all
>> load megdata
>> whos
Name Size Bytes Class
tdata 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 +
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 Class
xdata 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
Les matrices
La fonction find
>> [indi,indj] = find(d > 4);
indi =
2
2
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 =
2
3
>> 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
Les matrices
Les opérations
A =
3 2 0
1 6 3
0 0 1
B =
-1 6 1
3 2 4
1 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
Les matrices
Concaténation
●
Horizontale
>> [A B]
ans =
3 2 0 -1 6 1
1 6 3 3 2 4
0 0 1 1 2 3
A =
3 2 0
1 6 3
0 0 1
B =
-1 6 1
3 2 4
1 2 3
●
Verticale
0 0 1 1 2 3
>> [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 0 0 1 C = -1 6 1 D = 4>> [A C]
Error using horzcat
Dimensions of matrices being
concatenated are not consistent.
>> [A;C]
4 3ans =
3 2 0
1 6 3
0 0 1
-1 6 1
>> [A;D]
Error using vertcat
Dimensions of matrices being
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 =
La chaîne de caractère
>> onelet = 'Z'; >> vch = 'hello' vch = hello >> whos vchName Size Bytes Class vch 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
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.notes ans= geo: [9 8 7] math: [0 1 2] fran: [7 7 8]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: 10 notes: [1x1 struct] >> mysupercel{3} ans = 2 4 5 3 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
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
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.
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.
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.
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):
« ALLAEEG »: contenant multiple variables EEG Fenêtre principale
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.
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 fieldnameXEEGLAB: 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 » ?
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 4
ièmeélectrode:
EEG.data ( 4 , : )
>> EEG.data(4,:);
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 2
ièmeau 5
iè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 2
ièmeau 5
ièmeélectrode:
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 « 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 »?
EEGLAB: Manipulation des données
Pour 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,SNE2,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,SN
Epoch 1 Epoch 2
Epoch n
t1 t2 t3 t4 … tN
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
• 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.