Scripts et graphisme sous Matlab
- Objectifs
- apprendre à écrire des scripts.
- savoir faire une représentation 2D et 3D.
- Les scripts.
2.1 ouvrir un script
Un script est une suite de commande Matlab. Autrement dit, un script est un ensemble des instructions (commandes) Matlab qui joue le rôle de programme principal.
Pour lancer un script aller à l’onglet « File », « new » et puis « M-file ».
Une fois, vous cliquer sur « M-file », la fenêtre suivante apparait :
C’est dans cette fenêtre qu’on peut écrire l’ensemble des instructions Matlab. Il est en effet beaucoup plus simple de modifier des instructions dans un script que de retaper un ensemble d’instructions MATLAB dans la fenêtre de commandes.
Exercice 1
Ouvrir un nouveau script et taper le programme suivant :
a=2 ;
b=5 ;
c=(a+b)/2 ;
disp (c)
2.2 nommer et sauvegarder un script
Une fois, vous écrivez le programme vous devez le sauvegarder et lui donner un nom (dans notre exemple, on va le nommé : programme).
- Cliquer sur « file » puis « save as »
Remarques importantes :
- Le script doit avoir une extension de la forme « .m ».
- Dans l’appellation des scripts, Il faute éviter :
- D’utiliser les caractères désignant un opérateur spécifique à Matlab tel que « -», « ; », « * »,…etc.
- D’utiliser le nom d’une fonction Matlab telle que : sqrt, sin, cos,…etc.
- D’utiliser deux mots séparées (par exemple : program st, program 1).
2.3 Exécution d’un script
Pour exécuter un script, on écrit tout simplement son nom dans la fenêtre de commandes puis on clique sur entrer.
Le nom du script.
Si le script contient une (des) erreur(s), la ligne contenant l’erreur ainsi le type d’erreurs sont affichées dans la fenêtre des commande.
Exercice :
Soit M, la matrice définie par :
12 24 36 58 2 6 8 10 7 9 11 13
La sous matrice M1
Ecrire un script Matlab qui permet d’extraire :
- L’élément situé dans la troisième ligne et la quatrième colonne.
- Le vecteur L3 contenant tous les éléments de la troisième ligne.
- Le vecteur C4 contenant tous les éléments de la quatrième colonne.
- La sous matrice M1du matrice M, constitué à partir de l’intersection de la deuxième et la troisième colonne avec la deuxième et la troisième ligne.
- La matrice M2 dont ses lignes sont celles de la matrice M mais afficher en sens inverse.
M2=7 9 11 13 2 6 8 10 12 24 36 58
- Mettre tous les éléments de la deuxième ligne égaux à deux.
Remarque : seule la matrice M qui est déclarée manuellement.
3. Graphisme sous « Matlab »
3.1 Importance de la représentation graphique
Comme il est indiqué dans le TP No 1, MATLAB est un logiciel conçu pour les calculs scientifiques. Ceci signifie que Matlab va aider l’utilisateur (ingénieur, étudiant, comptable,…) à résoudre un problème lié à un phénomène naturel ou bien physique. Autrement dit, les observations (données) d’un expert ou bien d’un utilisateur sont enregistrées souvent sous forme des chiffres. Représenter ses observations sous forme d’un tableau ne permet pas à l’utilisateur de mieux voir la variation de ces données. Tandis que, si ces données sont représentées graphiquement, l’utilisateur peut non seulement voir la variation mais il peut aussi sélectionner les régions d’intérêt et les régions ou les événements pertinents se produisent.
3.2 Représentation graphique 2D
3.2.1 tracer un graphe.
Pour tracer un graphe en 2D, on fait appel à la fonction Matlab « plot ».
Exemple :
Soit F, un vecteur défini par : F= [1 20 14 12 10 11 25 26 14 45 23 45 1 20 14 12 10 11 25]
Pour représenter graphiquement le vecteur F, on peut taper tout simplement : plot (F).
Pour tracer, la fonction y définie par : yt=sin(0.3πt)
- Il faut tout d’abord déclarer le vecteur t
- Taper en suite la formule de y. [c.à.d.:y=sin(0.3πt)]. Remarquez vous que nous avons écris seulement y et non pat y(t).
- Finalement tracer le graphe de y(t) en utilisant la fonction « plot ».
clear all;
clc;
t= [0 : pi/100 :2* pi] ;
y= (0.3*pi*t) ;
plot(t, y)
Une fois, vous exécutez votre programme, une fenêtre contenant le graphe de la fonction mathématique apparait.
Le graphe de y(t)
L’axe
des cordonnées
L’axe des abscisses
3.2.2 Quadrillage, titres, couleurs, trait.
a) quadrillage :
* ajouter la commande suivante au programme précédant : grid
* Sauvegarder les modifications. ( file save)
* exécutez votre programme.
Que remarquez-vous ? Quel est le rôle de la fonction « grid » ?
b) titres :
1- le titre principal.
* ajouter au programme précédent la commande suivante : title(‘le graphe de la fonction y(t)’)
* Sauvegarder les modifications.
* exécutez votre programme.
Quel est le rôle de la fonction « title » ?
2- les titres des axes :
* ajouter au programme précédant les commandes suivantes :
xlabel(‘le temps t’)
ylabel(‘la fonction y’)
* Sauvegardez les modifications.
* exécutez votre programme.
Quel est le rôle des deux commandes « xlabel » et « ylabel »?
c) les couleurs
* remplacer l’expression plot(t, y) par l’expression plot (t, y,’r’)
* Sauvegardez les modifications.
* exécutez votre programme.
Que remarquez-vous ?
d) le type de trait
* remplacez l’expression plot (t, y,’r’) par l’expression plot (t, y,’+r’)
* Sauvegardez les modifications.
* exécutez votre programme.
Que remarquez-vous ?
Remarques importantes
- Pour qu’on puisse écrire plot(t, y), il faut que les vecteurs t et y soient de la même taille.
- Il faut écrire correctement les commandes.
- La représentation graphique doit permettre de visualiser les détails de la fonction tracée.
- On peut faire un ZOOM pour agrandir une région du graphe.
- Pour savoir plus sur les différents types de trait et de couleurs tapez : help plot
3.2.3 tracer deux graphes
a) tracer deux graphes dans deux fenêtre graphiques séparées
Pour tracer deux graphes dans deux fenêtres graphiques séparées, on peut taper : fenêtre(n) ou n représente le numéro de la fenêtre graphique
Exemple
clear all;
clc
t= [0 : pi/100 : 2*pi] ;
y=sin (0.3*pi*t) ;
y1=cos(0.3*pi*t);
figure(1)
plot(t, y)
grid
title(‘le graphe de la fonction y(t)’)
xlabel(‘le temps t’)
ylabel(‘la fonction y’)
figure(2)
plot(t, y1)
grid
title(‘le graphe de la fonction y1(t)’)
xlabel(‘le temps t’)
ylabel(‘la fonction y1’)
b) tracer deux graphe dans la même fenêtre graphique.
b-1 En utilisant la fonction « hold »
On peut tracer deux ou plusieurs graphes dans la même fenêtre graphique en utilisant la fonction « hold ».
Exemple
clear all;
clc
t= [0 : pi/100 : 2*pi] ;
y=sin (0.3*pi*t) ;
y1=cos(0.3*pi*t);
plot(t, y)
grid
hold
plot(t, y1,’r’)
Conseil
Lorsqu’on trace deux graphes dans une même fenêtre, il est conseillé d’utiliser deux couleurs différentes ou bien deux types de trait différents.
b-2 En utilisant la fonction « subplot »
La deuxième méthode pour tracer plusieurs graphes dans une même fenêtre consiste à utiliser la fonction « subplot ». Cette fonction permet de subdiviser la fenêtre graphique utilisée en plusieurs sous -fenêtres.
Chacune de ces sous -fenêtres se comporte comme une fenêtre à part.
La syntaxe de cette commande est la suivante :
Subplot(n,m,k) avec
n : nombre de lignes.
m : nombre de colonnes.
k : la position du graphe.
1 3 5
2 4 6
Exemple
clear all;
clc
t= [0: pi/100: 2*pi];
y=sin (0.3*pi*t) ;
y1=cos (0.3*pi*t);
y2=sin (0.3*pi*t)+cos (0.3*pi*t);
y3=sin (0.3*pi*t)-cos (0.3*pi*t);
subplot(2,2,1);plot(t, y)
grid
subplot(2,2,2);plot(t, y1)
grid
subplot(2,2,3);plot(t, y2)
grid
subplot(2,2,4);plot(t, y3)
grid
3.3 Représentation graphique 3D
3.3.1 En utilisant la fonction « plot3 »
La commande « plot3 » est similaire à la commande « plot » sauf qu’on ajoute un troisième axe Z.
Exemple
t = 0:0.1:10*pi;
x = exp(-t/20).*cos(t);
y = exp(-t/20).*sin(t);
z = t;
plot3(x,y,z);
xlabel(‘x’);
ylabel(‘y’);
zlabel(‘z’);
grid
Une fois le tacé apparait, vous pouvez modifier la rotation des axes. Ceci est possible soit en utilisant la flèche (figure) soit en tapant la commande « view » dans le programme.
Fléché de rotation
Exemple (le reste du programme de l’exemple est dans la page suivante)
t = 0:0.1:10*pi;
x = exp(-t/20).*cos(t);
y = exp(-t/20).*sin(t);
z = t;
subplot(2,2,1);plot3(x,y,z);
xlabel(‘x’);
ylabel(‘y’);
zlabel(‘z’);
view(-10,10);
title(‘Default plot3’);
grid
subplot(2,2,2);plot3(x,y,z,’og’);
xlabel(‘x’);
ylabel(‘y’);
zlabel(‘z’);
view(-9,56);
title(‘Az=-10, El=10’);
grid
subplot(2,2,3);plot3(x,y,z,’xb’);
xlabel(‘x’);
ylabel(‘y’);
zlabel(‘z’);
view(0,90);
title(‘Az=0, El=90’);
grid
subplot(2,2,4);plot3(x,y,z,’dr’);
xlabel(‘x’);
ylabel(‘y’);
zlabel(‘z’);
view(90,0);
title(‘Az=90, El=0’);
grid
3.3.2 En utilisant la fonction « Mesh »
Pour tracer une fonction à deux variables ; c à d une fonction de la forme z=f(x, y) ; on suit les étapes suivantes
- on définit un maillage régulier, c à d on va construire deux matrice X et Y dont leurs colonnes sont identiques et prennent la valeur des deux vecteurs x et y. ceci est possible en utilisant la commande « meshgrid ».Pour mieux comprendre cette notion du maillage essayer l’exemple suivant.
Exemple :
x = [-1 0 1];
y = [9 10 11 12];
[X,Y] = meshgrid(x,y)
- on donne la formule permettant de définir la matrice Z
Z= f(X,Y)
- on utilise la commande « mesh » pour tracer le graphe 3D.
Exemple
On veut tracer la fonction f définie : (x,y)xe-x2-y2 définie dans le domaine [-2,2] x [-2,2].
x=[-2:0.2:2];
y=[-2:0.2:2];
[X ,Y]=meshgrid(x,y);
Z=X.* exp(-X.^2-Y.^2);
mesh(X, Y, Z)
3.3.3 En utilisant la fonction « surf »
La commande « surf » permet de tracer une surface paramétrée d’équations
{x=g1(u,v) y=g2(u,v) z=g3(u,v)
On suit les mêmes étapes que la commande « mesh ».
Exemple
On veut tracer le graphe du système d’équations suivant
{x=v cos(u) y=v sin(u) z=2u
Sur le domaine [0,2] x [0,2]
v=[0:0.2:2*pi];
u=[0:0.2:2];
[U,V] = meshgrid(v, u);
X = V.*cos(U);
Y = V.*sin(U);
Z = 2*U;
surf(X,Y,Z)
Remarques
- ils existent d’autres commandes pour faire une représentation 3D telles que « meshz », « waterfall »,…etc.
- Utiliser la commande « help » pour avoir l’aide sur ces commandes.
3.4 Représentations spécifiques
Exemple 1 : la commande « bar »
a = [1 2 3 4 5 6 7];
b = [85 93 87 91 95 71 98];
bar(a,b);
xlabel(‘a’)
ylabel(‘b’)
Exemple 2 : la commande « hist »
y = -2*log(rand(1,5000));
x = 0.2:0.4:10;
hist(y,x);
Exemple 3 : la commande « pie »
pourcentage = [31 36 18 8 7];
h = pie(pourcentage);
Remarque : remplacer la commande « pie » par « pie3 ». Que ce passe t il ?