Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Une introduction
Matlab : « Matrix laboratory »
Manipulation de matrices
Tracés de courbes
Mise en œuvre d’algorithme
Création d’applications
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
Signal Processing
Image Processing
Statistics
Wavelet
…
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
Symbole de
l’invite de Opérateurs courants :
commande ^ : exponentiation
* : multiplication
/ : division
ans =
21
Résultat
assigné à la
variable ans
(answer)
Prise en main
Les calculs élémentaires
>> 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
>> a = 35.6
Nom de ma
variable
Entrée
>> a = 35.6
a =
35.6000
>> a = 35.6
a =
35.6000
Pas
d’affichage
>> b = 273.15;
>>
Prise en main
Les variables
>> 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
>> whos
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x1 8 double
Prise en main
Les variables
308.7500
>> a = 32; Définir une nouvelle
valeur pour a
Prise en main
Les variables
>> clear a b tK
>> 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
>> doc
Recherche de
fonctionnalités par
mot-clefs
Les matrices
L’élément de base en Matlab (MATrix LABoratory)
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
a(1,1)
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)
n colonnes
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
(29 5 336 7 )
d =
3 2 0
-4 5 19
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 « à »
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
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
>> 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,2:3)
Extrait les éléments de la 2ème ligne
ans = entre la colonne 2 et 3
5 19
>> 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
>> whos x*
Name Size Bytes Class
xdata 1x6782 54256 double
xpart 1x2713 21704 double
>> 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
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(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…
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
Une fonction
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
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)
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
: = 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 , : ) );
>> 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)
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 »
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