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 commandeswho, whosou 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 5Pour 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 fonctionssin, 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 fonctionx^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 commandefigureSi A et B sont des vecteurs de même dimension=n, la commandeplot(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 offPour effacer une figure:clfPour la fermer:closePour 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 commandeA=[0:2*pi/3:2*pi];plot(sin(A),cos(A)),axis equal offdessine un triangle équilatéral; pourquoi?. Notez que l'optionaxis equal offdemande 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'optioncolormap(cool)les couleurs varient entre bleu, pour la plus petite valeur des coefficients, et vert, pour la plus grande valeurs. Par exempleX=[-1:0.05:1]; Y=[-1:0.05:1]; colormap(winter); imagesc(X'*Y) axis equal offdonne 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 tp1dans la fenêtre de commandes. Pour les retrouver pendant une autre session, tapez:load tp1