Introduction à Matlab
11 mars 2002
Ouvrez un nouveau fichier et sauvegardez-le sous tp1 (par exemple). Ecrivez
toutes vos commandes dans ce fichier et pour les executer, utilisez soit la
commande File|Execute Script, soit copier-coller
dans la fenêtre principale. Ainsi, vous pouvez modifier des commandes
erronées ou les reutiliser ultérieurement.
On peut aussi essayer quelques commandes dans la fenêtre principale avant
de les mettre dans le fichier tp1.m.
Pour obtenir de l'aide, tapez
help "commande"par exemple:
help helpou encore :
help whosEssayez toutes le commandes qui vous sont expliquées dans ce qui suit en choisissant d'autres valeurs.
>>a=3
a =
3
>>
Pour supprimer l'affichage du résultat, terminez la commande avec un
; (point virgule), par exemple:
>>b=a+1; >>Pour afficher la valeur attribuée à une variable, tapez le nom de celle-ci:
>>b
b =
4
>>
Pour écrire plusieurs commandes, séparez-les par un , ou un ;
>>c=0.5;d=c*a,c
d =
1.5000
c =
0.5000
>>
Si aucune variable n'est associée à une expression, le résultat est stocké
d'office
dans une variable nommée ans :
>>c+5
ans =
5.5000
>>
Certaines variables sont prédéfinies:
>>pi
ans =
3.1416
>>
Matlab fait la distinction entre majuscules et minuscules l'état interne
de votre session Matlab est donné par un ensemble de variables que vous
créez et modifiez au cours de la session. Vous pouvez afficher cet ensemble
à l'aide des commandes
who, whos
ou par le bouton correspondant dans le menu. Pour effacer une variable,
utilisez la commande
clear "variable" ou
clear all .
Vecteurs et matrices
Vecteurs
La structure de données principale de Matlab est le tableau à une ou
plusieurs dimensions. Pour créer un vecteur ligne, on utilise les crochets, et on
sépare les composantes par des espaces ou des virgules:
>>A=[1 2 3 4 5]
A =
1 2 3 4 5
>>B =[6,7,8]
6 7 8
>>
Une commande de la forme C=[a:h:b] crée un
vecteur ligne dont les composantes sont
a a+h
a+2h..a+nh où a+nh<=b mais a+(n+1)h>b:
>>C=[0:1:10]
C =
0 1 2 3 4 5 6 7 8 9 10
>>D=[1:0.3:2]
D =
1.0000 1.3000 1.6000 1.9000
>>
On peut calculer avec les vecteurs comme avec les scalaires:
>>2*A
ans =
2 4 6 8 10
>>A+2
ans =
3 4 5 6 7
>>D=[-1 3 4 -2 0]
D =
-1 3 4 -2 0
>>A-2*D
ans =
3 -4 -5 8 5
>>
Notez le comportement particulier de la somme d'un scalaire et un vecteur:
cela revient à ajouter le scalaire à chaque composante du vecteur. Par
contre, on n'a pas le droit d'ajouter des vecteurs de dimensions
différentes:
>>A+B
??? Error using ==> +
Matrix dimensions must agree.
>>
Pour accéder à un ou plusieurs éléments d'un vecteur, utilisez les
paranthèses:
>>B(1),A(1:3)
ans =
6
ans =
1 2 3
>>C
C =
0 1 2 3 4 5 6 7 8 9 10
>>C(2*[2:4])
ans =
3 5 7
>>
Notez que dans la dernière commande [2:4]
équivaut à 2 3 4 et 2*[2:4]
équivaut à 4 6 8. Notez aussi que les indices
d'un tableau commencent toujours avec un 1.
Pour modifier un sous-ensemble d'éléments d'un vecteur on utilise:
>>A(1)=0
A =
0 2 3 4 5
>>A(2:5)=[4 3 2 1]
A =
0 4 3 2 1
>>A([1 3 5])=2
A =
2 4 2 2 2
>>
Matrices
Une matrice peut être créée en donnant la liste de ses lignes, séparées
par ;. Dans chaque ligne, on peut séparer les
coefficients par des espaces ou par des virgules:
>>F1=[1 2 3;4 5 6]
F1 =
1 2 3
4 5 6
>>F2=F1+2
F2 =
3 4 5
6 7 8
>>F3=[1,2;3,4]
F3 =
1 2
3 4
>>3*F3
ans =
3 6
9 12
>>
Notez ici aussi que d'ajouter un scalaire à une matrice revient à ajouter
le scalaire à chaque coefficient de la matrice. On peut multiplier les
matrices, à condition que le produit soit défini (nombre des colonnes
de la première=nombre de lignes de la deuxième):
>>F3*F1
ans =
9 12 15
19 26 33
>>F1*F2
??? Error using ==> *
Inner matrix dimensions must agree.
>>
L'apostrophe dénote la transposée d'une matrice:
>>F2'
ans =
3 6
4 7
5 8
>>F1*F2'
ans =
26 44
62 107
>>
On peut aussi faire le produit de matrices de même taille élément par
élément par l'opération dénotée par .* (produit de Hadamard):
>>F1
F1 =
1 2 3
4 5 6
>>F2
F2 =
3 4 5
6 7 8
>>F1.*F2
ans =
3 8 15
24 35 48
>>
On peut ajouter des colonnes ou des lignes à une matrice:
>>[F1;7 8 9]
ans =
1 2 3
4 5 6
7 8 9
>>[F1,[7;8]]
ans =
1 2 3 7
4 5 6 8
>>
Exercice 1
Calculez le produit scalaire des vecteurs
A=[1 2 3 4 5 6 7]
et B=[6 7 8]; B doit être considéré comme un vecteur à 7 composantes en
lui ajoutant le nombre qu'il faut de coordonnées égales à zéro.
On accède aux éléments d'une matrice par:
>>F1(1,2)
ans =
2
>>F1(2:4)
ans =
4 2 5
Pour voir la 3-ème colonne et la deuxième ligne:
>>F1(:,3)
ans =
3
6
>>F1(2,:)
ans =
4 5 6
>>
F(i) est le i-ème coefficient de la matrice F, où ces
coefficients sont numérotés colonne par colonne, de haut en bas et de
gauche à droite. Par exemple:
>>F4=[1 2 3 4;5 6 7 8; 9 10 11 12]
F4 =
1 2 3 4
5 6 7 8
9 10 11 12
>>F4(5)
ans =
6
>>F4(2*[1:6])
ans =
5 2 10 7 4 12
>>
Ci-dessus on a demndé les coefficients numérotés 2*[1:6], c'est-à-dire 2 4 6 8
10 12.
Les 3 premières colonnes, puis les 2 premières lignes:
>>F4(:,1:3)
ans =
1 2 3
5 6 7
9 10 11
>>F4(1:2,:)
ans =
1 2 3 4
5 6 7 8
>>
Il existe des fonctions pour créér des matrices particulières:
>>eye(3)
ans =
1 0 0
0 1 0
0 0 1
>>ones(3,2)
ans =
1 1
1 1
1 1
>>zeros(2,3)
ans =
0 0 0
0 0 0
>>
Pour modifier les éléments d'une matrice, on utilise:
>>F4(2,3)=0
F4 =
1 2 3 4
5 6 0 8
9 10 11 12
>>F4(3)=0
F4 =
1 2 3 4
5 6 0 8
0 10 11 12
>>F4(2*[1:6])=0
F4 =
1 0 3 0
0 6 0 8
0 0 11 0
>>
Exercice 2
Créez une matrice de taille 9x9 représentant
un (faux)
échiquier (0 pour noir, 1 pour blanc). Commencez par créer une matrice
n'ayant que des 1. Modifiez ensuite un sous-ensemble d'éléments (par une
seule commande).
Ensuite, crééz un vrai échiquier 8x8 à partir de la matrice précédente.
Les tableaux multi-dimensionnels sont créés , modifiés et on y accède de
la même manière; par exemple:
>>K=ones(2,2,2)
K(:,:,1) =
1 1
1 1
K(:,:,2) =
1 1
1 1
>>
Les fonctions sin, cos, tan, exp, tanh, . . .
peuvent être
directement appliquées à tous les éléments d'un tableau; le résultat est un
tableau contenant les valeurs prises par ces fonctions sur le coefficient
du tableau de départ.
>>F3
F3 =
1 2
3 0
>>exp(F3)
ans =
2.7183 7.3891
20.0855 1
>>
Exercice 3
Calculez la liste des valeurs prises par la fonction
x^2+sin(x)-x/exp(x)
en donnant à x toutes les
valeurs de -2 à 2 espacées de 0.1.
Graphiques
Une nouvelle figure est créée par la commande
figure
Si A et B sont des vecteurs de même dimension=n, la commande
plot(A,B)
dessine les segments de droite joignant les points de coordonnées
(A(i),B(i)), pour i=1,...,n-1.
Par exemple:
>>A=[1 2 3 4]
A =
1 2 3 4
>>B=[1 0 1 -1]
B =
1 0 1 -1
>>plot(A,B)
donne comme résultat:
On peut spécifier le style d'affichage:
>>plot(A,B,'g*')
dessine des * verts (g=green) aux points (A(i),B(i)), sans les joindre par
des segments. Tapez help plot pour voir d'autres
styles.
Pour avoir plusieurs graphiques sur une même figure:
hold on
plot(C,D)
hold off
Pour effacer une figure:
clf
Pour la fermer:
close
Pour tracer le graphe de la fonction sin(x), on peut par exemple écrire:
>>A=[0:0.01:2*pi];plot(A,sin(A))
>>
Exercice 4
Dessiner le graphe des fonctions sin(x) et cos(x), pour
x entre -2*pi et 2*pi sur une même figure.
La commande
A=[0:2*pi/3:2*pi];plot(sin(A),cos(A)),axis equal off
dessine un triangle équilatéral; pourquoi?. Notez que l'option
axis equal off
demande que les deux axes soient à la même échelle, et qu'elles ne soient
pas dessinées.
Exercice 5
Dessinez un hexagone régulier.
Trouvez deux vecteurs A et B tels que la commande plot(A,B), axis equal off dessine le polygone suivant:
Dessinez un "cercle".
La commande
imagesc(A)
où A est une matrice de taille mxn , dessine un rectangle partagée en mxn rectangles,
et la couleur du rectangle (i,j) dependra de la valeur de A(i,j).
Essayez par exemple :
>>close
>>A=[1 2 3;4 5 6; 7 8 9]
A =
1 2 3
4 5 6
7 8 9
>>imagesc(A)
Si on choisit l'option
colormap(cool)
les couleurs varient entre bleu, pour la plus petite valeur des
coefficients, et vert, pour la plus grande valeurs.
Par exemple
X=[-1:0.05:1];
Y=[-1:0.05:1];
colormap(winter);
imagesc(X'*Y)
axis equal off
donne pour résultat:
Expliquez pourquoi!
Exercice 6
Afficher l'échiquier de l'exercice 2 en noir et blanc.
Pour sauvegarder les variables de votre session Matlab tapez
>>save tp1
dans la fenêtre de commandes. Pour les retrouver pendant une autre session,
tapez:
load tp1