Traitement des données avec Matlab Une introduction
Matlab: «Matrixlaboratory» 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 ) «Equivalents» gratuits : GNU Octave, Scilab, SciPy % Cleve Moler, concepteur 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 toolboxsdé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 Plan Manipuler les données Effectuer des calculs de base Visualiser les données 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é ( 2 + 5) >> 3^2*(2+5)/(5-2) 3 2 5 2 Symbole de l invite de commande Opérateurs courants : ^ : 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 = Résultat assigné à la variable ans (answer) 21
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 = Résultat assigné à la variable ans (answer) 21 >> ans/2 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 >> a = 35.6 Entrée 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 >> b = 273.15; >> Pas d affichage
Prise en main Les variables Affecter une valeur à une variable >> a a = >> b 35.6000 aet bsont conservées en mémoire = dans le Workspace 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 tk = Créer une nouvelle variable à partir des 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 >> tk = a + b tk = 305.1500 Pour afficher à nouveau l équation écrite précédemment, utiliser la flèche directionnelle du clavier Nouvelle valeur de tk
Prise en main Les variables La notation en puissance de 10 2,16 10 6 >> 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 Nom du fichier Variables à stocker Pour les récupérer lors d une nouvelle session ou après suppression : >> load myvar Charger les variables 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 ans = 3.1416 >> i ans = 0.0000 + 1.0000i >> 0/0 ans = NaN Pour afficher davantage de décimales : >> format long >> pi ans = 3.141592653589793 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) ans = 5 Les fonctions trigonométriques : cos, sin, tan, Inverses : asin, acos, Hyperboliques : sinh, acosh Des fonctions mathématiques : sqrt: racine carrée log, log10, exp, abs, sign >> round(pi*2) ans = 6 Des fonctions d arrondis : round: entier le plus proche 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) Valeur(s) en abscisse Valeur associées en ordonnée Options de mise en forme 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 >> help ceil ceil Round towards plus infinity. ceil(x) rounds the elements of X to the nearest integers towards infinity. >> doc See also floor, round, fix. Utilité, arguments d'entrées, options, résultats Reference page in Help browser doc ceil 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 m lignes a(1,1) 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) m lignes 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(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 6 10 Un vecteur en ligne : 1 x 4 ( 29 5 336 7) Un vecteur en colonne : 2 x 1 2,567 1,189 Une matrice multidimentionnelle: 2 x 3 x 3 3 12 1 2 4 5 19 0 2 5 8 24 3 3 2 0 36 2
Les matrices >> a = 1.56e6; >> b = [29 5 336 7] b = L affectation 29 5 336 7 >> c = [2.567 ; 1.189] c = 2.5670 1.1890 Un seul nombre 1,56 6 10 Des crochets pour définir la matrice Les espaces séparent les éléments du vecteur ligne. Ou les virgules : >> b = [29,5,336,7]; ( 29 5 336 7) Les ; séparent les éléments du vecteur colonne 2,567 1,189
Les matrices L affectation >> d = [3 2 0 ; -4 5 19] d = 3 2 0-4 5 19 >> size(d) ans = 2 3 3 2 0 4 5 19 Les ; séparent les lignes d une matrice 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 «à» >> 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 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 Indice de colonne
Les matrices L adressage 3 2 0 4 5 19 d (i, j) Indice de la ligne 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 3 2 0 4 5 19 d (i, j) Indice de la ligne 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 3 2 0 4 5 19 d (i, j) Indice de la ligne Indice de colonne L indexation linéaire des matrices d(1) d(3) d(5) d(2) d(4) d(6) d (k) Un seul indice Créer le vecteur (-4 0) à partir de d (indexation linéaire ou concaténation)
Les matrices L adressage 3 2 0 4 5 19 d (i, j) Indice de la ligne Indice de colonne L indexation linéaire des matrices d(1) d(3) d(5) d(2) d(4) d(6) d (k) Un seul indice Créer le vecteur (-4 0) à partir de d (indexation linéaire ou concaténation) d([2 5]) ou [d(2,1) d(1,3)]
Les matrices L adressage d (i, j) >> d = [3 2 0 ; -4 5 19] d = 3 2 0-4 5 19 Indice de la ligne Indice de colonne >> d(1,1) ans = 3 L élément de la 1 ère ligne, 1 ème colonne >> d(2,3) ans = 19 L élément de la 2 ème ligne, 3 ème colonne
Les matrices L adressage d = L opérateur «:» seul désigne tous les indices 3 2 0-4 5 19 >> d(:,1) ans = 3-4 Tous les éléments de la première colonne >> 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) ans = 5 19 Extrait les éléments de la 2 ème ligne entre la colonne 2 et 3 >> d(1,[1 3]) ans = 3 0 Extrait les éléments en 1ème et 3 ème colonne au niveau de la 1 ère ligne >> d(:,2:end) ans = 2 0 5 19 Extrait toutes les lignes situées entre la 2ème et la dernière colonne
Les matrices L adressage >> vdata = [1;7;9] vdata = 1 7 9 >> vdata(2) ans = 7 Pour les vecteurs, un seul indice nécessaire >> d(4:6) ans = 5 0 19 L indexation linéaire des matrices d = 3 2 0-4 5 19 d(1) d(3) d(5) 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 (condition) d = 3 2 0-4 5 19 >> d(d>2) ans = 35 5 19 >> d(d>1 & d<4) ans = 3 2 >> d(d<=0) = 42 d = 3 2 42 42 5 19 Sort les éléments qui satisfont la comparaison d>2 Change la valeur des éléments inférieurs ou égal à 0 en 42
Les matrices Un cas pratique >> clear all >> load megdata Dans megdata.mat sont stockés les vecteurs tdata(le temps) et xdata (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); >> xpart = xdata(tdata>4 & tdata<8); 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') holdon : on conserve les tracés précédents sur la figure >> print(gcf,'-djpeg100','thegraph')
Les matrices La fonction find Pour une matrice >> [indi,indj] = find(d > 4); d = 3 2 0-4 5 19 indi = 22 indj = 23 Retourne les indices des lignes et colonnes satisfaisant à la condition spécifiée en argument d entrée Pour une matrice simple vecteur >> ind = find(xdata > max(xdata)*0.9); >> plot(tdata(ind),xdata(ind),'gx') Donne les indices des valeurs de xdata supérieures à 90% de la valeur maximale
Les matrices Les opérations A = 3 2 0 Transposition >> A' Calcul matriciel >> A*B >> A/B >> A*B(1,:) 1 6 3 0 0 1 B = -1 6 1 3 2 4 1 2 3 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 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 >> [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 = >> [A C] Error using horzcat Dimensions of matrices being concatenated are not consistent. >> [A;C] ans = 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. 3 2 0 1 6 3 0 0 1 C = -1 6 1 D = 4 3
Les matrices Les opérations sur les vecteurs Somme d un vecteur >> sum(xd) ans = 16 xd=[3 2 0 1 6 3 0 1]; Moyenne Valeur min et max >> min(xd) ans = 0 >> mean(xd) Sur les matrices, ces fonctions ans = 2 >> max(xd) ans = 6 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 'permet de définir les objets de type chaîne de caractères >> whos vch Name Size Bytes Class vch 1x5 10 char La chaîne correspond à un vecteur ligne >> vch(5) ans = o >> str = [vch, ' world'] str = hello world L adressage et la concaténation se font comme pour les matrices de nombre >> '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'; >> S.age = 10 ; >> S.notes.geo = [9 8 7] ; >> S.notes.math = [0 1 2] ; >> S.notes.fran = [7 7 8] ; >> S.code = '0+0'; Définition d une structure S >> 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] >> S.notes.math(2) ans = 1
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 = 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 mysupercelstocké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 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. 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 currentdataset». Pour importer des données brutes - format.bdf(biosemi data file): File Import data UsingEEGLAB functionsand Plugins FromBiosemiBDF 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 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 4 iè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 2 ième au 5 ième électrode: EEG.data(2 à 4, : ) 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 >> 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 dufield«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» 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 E1,S1 E4,S1 E1,S2 E4,S2 E1,S3 E4,S3 E1,S4 E4,S4 E1,SN E4,SN 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 E1,S1 E4,S1 E1,S2 E72,SN E4,S2 E1,S3 E4,S3 E1,S4 E4,S4 E1,SN E4,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 t 1 t 2 t 3 t 4 t N size(eeg.data, 2) == size(eeg.times, 2)
EEGLAB: Manipulation des données Pour résumer II: On cherchedes é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_icontient 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); % baselinesignal du 4 ième électrode, 2 iè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'