Upload
lamxuyen
View
218
Download
0
Embed Size (px)
Citation preview
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…
� Lecture & écriture de fichiers de données
● 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 :
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)
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
� 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
>> 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 »
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)
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
�Pas nécessaire de déclarer le type, ni d’initialiser
Prise en main
● Affecter une valeur à une variable
>> a = 35.6
a =
� Les variables
a =
35.6000
>> b = 273.15;>>
Pas
d’affichage
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
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
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
clavier
� Les variables
305.1500
clavier
Nouvelle valeur de tK
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
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
Prise en main
>> clear a b tK
● Pour effacer certaines variables :
� Les variables
>> clear all
● Pour effacer tout le workspace :
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
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
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
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
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)
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)
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)
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
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
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
− 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
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
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
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
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)
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)
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)]
>> 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
>> 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
>> 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
>> 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
>> 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.
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
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 +
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
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
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,:)
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
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.
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
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
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]
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
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 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 • 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.
• Comment visualiser les données graphiquement.
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
« ALLAEEG »: contenant multiple variables EEGFenêtre principale
« 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
La variable « ALLEEG »:
un structure de dimension 1 x2 :
dataset1 dataset2
fieldname1 fieldname1
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:
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
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, : );
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?
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)
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
� 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'