Introduction à la programmation MATLAB
Introduction à la programmation MATLAB
1- Présentation de MATLAB
2- L’environnement MATLAB
3- Opérations Elémentaires avec MATLAB
1- PRESENTATION DE MATLAB
MATLAB (MATrix LABoratory) est un langage de programmation très répandu dans les
domaines de technologie et de la recherche scientifique. La première version de Matlab
fut mise en œuvre aux universités du Nouveau Mexique et de Stanford aux USA, à la fin
des années 70. Elle se destinait essentiellement à l’analyse numérique et à l’algèbre
linéaire. Depuis, Matlab est devenu un outil que l’on peut utiliser pour mener des
simulations dans de très nombreux domaines tels que les mathématiques appliquées, la
physique, l’ingénierie, etc.
MATLAB est un langage interprétable comme Python et Perl. Il n’est pas compilable
comme les langages C et Fortan, mais sa force réside dans les points suivants :
son environnement interactif permet une visualisation aisée des données et des
résultats,
sa grande richesse en termes de fonctions et de procédures mathématiques
prédéfinies, on aura à écrire peu d’instructions pour réaliser des opérations
mathématiques complexes, telles que l’inversion d’une matrice, le traçage d’un
graphique, la résolution d’une équation polynomiale, etc.
la simplicité de sa syntaxe qui est plus facile que celle des langages C, Fortran et
Pascal. Matlab permettra donc un gain considérable en temps de développement
MATLAB n’est pas le seul environnement de calcul scientifique. Il existe d’autres
concurrents dont les plus importants sont Maple et Mathematica. Il existe même des
logiciels libres qui sont des clones de Matlab comme Scilab et Octave.
2- L’ENVIRONNEMENT MATLAB
Actuellement MATLAB est à la version 7.8 et au démarrage il affiche plusieurs fenêtres :
• Current Directory: qui indique le répertoire courant ainsi que les fichiers existants.
• Workspace: qui indique toutes les variables existantes avec leurs types et valeurs.
1
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
• Command History: qui garde la trace de toutes les commandes entrées par l’utilisateur.
• Command Window : qui est utilisé pour saisir les commandes directes de Matlab et
afficher les résultats.
• Editeur : qui sert à écrire les programmes.
2
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> 2+3
ans =
5
>> 2-2
ans =
0
>> 2*5
ans =
10
>> 2/3
ans =
0.6667
>> 2\3
ans =
1.5000
>> 2^3
ans =
8
Remarque
Dans la fenêtre « Command Window » on peut utiliser les boutons de flèches pour
afficher les lignes de commandes déjà saisies.
>> 70-(5*2)+2^3
ans =
68
3
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Remarques
1- « pi » est une constante prédéfinie dans Matlab et qui vaut la valeur : π=3.1415,
2- La fonction « cosd(a) » est le cosinus de l’angle a exprimé en degrés.
Le tableau 2 donne les fonctions trigonométriques et leurs inverses.
4
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> tan(pi/4)
ans =
1.0000
>> tand(60)
ans =
1.7321
>> cot(pi/3)
ans =
0.5774
>> asind(0.5)
ans =
30.0000
>> sec(pi/3)
ans =
2.0000
>> round(1.3)
ans =
1
>> round(1.8)
ans =
2
>> round(1.5)
ans =
2
>> round(-3.7)
ans =
-4
>> round(-3.2)
ans =
-3
floor (x) : renvoie l’entier le plus proche et plus petit que x (càd. tend vers – l’infini),
>> floor(2.6)
ans =
2
>> floor(-3.4)
ans =
-4
5
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
ceil (x) : renvoie l’entier le plus proche et plus grand que x (càd. tend vers + l’infini),
>> ceil(5.1)
ans =
6
>> ceil(-4.2)
ans =
-4
>> fix(1.6)
ans =
1
>> fix(-2.9)
ans =
-2
>> a=2.7;b=-5.3;c=0;
>> sign(a),sign(b),sign(c),
ans =
1
ans =
-1
ans =
0
Remarques
1- On utilise le symbole % pour écrire un commentaire,
2- Pour demander l’aide sur une fonction on écrit la commande : help fonction.
6
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> 14/3
ans =
4.6667
>> format long
>> 14/3
ans =
4.666666666666667
>> format short
>> 14/3
ans =
4.6667
En utilisant format rat, MATLAB fournit aussi avec approximation raisonnable, la fraction
la plus proche d’un nombre réel donné.
ans =
355/113
>> format
>> pi
ans =
3.1416
7
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Pour des raisons d’économie de place, le format compact est très utile. Il supprime les
lignes blanches dans l’affichage. Comparons par exemple
avec le format par défaut (format), l’affichage contient des lignes blanches,
>> format
>> sin(pi/5)
ans =
0.5878
>> exp(1.6)
ans =
4.9530
>> i^2
ans =
-1
et
>> j^2
ans =
-1
>> z1=3+4i
z1 =
3.0000 + 4.0000i
8
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
sa partie imaginaire
>> imag(z1)
ans =
4
son module
>> abs(z1)
ans =
5
>> z2=conj(z1)
z2 =
3.0000 - 4.0000i
>> sqrt(z1*conj(z1))
ans =
5
z3=5+2i
z3 =
5.0000 + 2.0000i
>> z1+z3
ans =
8.0000 + 6.0000i
de multiplication
>> z1*z3
ans =
7.0000 +26.0000i
de division
>> z1/z3
ans =
0.7931 + 0.4828i
9
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Nous pouvons également élever un nombre complexe à une puissance de façon similaire
aux réels.
>> z1^2
ans =
-7.0000 +24.0000i
>> a=5
a=
5
>> A=8
A=
8
>> a+1
ans =
6
>> A+1
ans =
9
Pour voir la liste des variables utilisées, soit on regarde à la fenêtre ‘Workspace’ soit on
utilise les commandes ‘whos’ ou ‘who’.
whos donne une description détaillée (le nom de la variable, son type et sa taille), par
contre who donne juste les noms des variables.
>> who
A a ans
>> whos
Name Size Bytes Class Attributes
A 1x1 8 double
a 1x1 8 double
ans 1x1 8 double
Seule la valeur de c est affichée dans la fenêtre ‘Command Window’, les deux autres
valeurs de a et b n’apparaissent pas dans ‘Command Window’ parcequ’elles sont suivies
de ‘ ; ’. Cependant la fenêtre ‘Workspace’ affiche toutes les valeurs des 3 variables a, b,
c.
12
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> b=roots(a)
b=
-2.0000
1.500
Dans un deuxième exemple, on peut évaluer le polynôme p(x) en choisissant les valeurs
de x appartenant à l’intervalle *-2, +2] avec un pas de 0.5.
>> x=-1:0.5:1;
>> polyval(p,x)
ans =
14.0000 6.2500 2.0000 1.2500 4.0000
14
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=-2:0.1:4;
>> y=polyval(a,x);
>> plot(x,y)
>> grid
>> title('Tracé de y=2x3-5x2-4x+3')
>> xlabel('x')
>> ylabel('y')
Nous pouvons vérifier que les valeurs -0.5, 0, 2, 4 sont bien les racines du polynôme.
>> d=roots(c)
d=
0
4.0000
2.0000
-0.5000
Comme exemple complémentaire, cherchons les coefficients d’un polynôme qui possède
une racine double égale à -1 et une racine égale à 3.
L’opération inverse est la division polynômiale qui est réalisée dans MATLAB par
déconvolution. D’après l’exemple précédent, si nous divisons le polynôme p(x) = (2 x 2 + 3
x + 1) ∙ (5 x - 2) par le polynôme p1(x) = (2 x2 + 3 x + 1) nous obtiendrons le quotient (5 x -
2) avec un reste nul.
>> [Q, R]=deconv(p,p1)
Q=
5 -2
R=
0 0 0 0
La division de g(x) par p1(x) donne un quotient Q(x)= ( 5 x ) et un reste R(x) = (- 5 x - 4).
Nous écrirons
g(x) = p1(x) ∙ Q(x) + R(x)
soit
10 x3 + 15 x2 - 4 = (2 x2 + 3 x + 1) ∙ ( 5 x ) + (- 5 x -4)
8- DERIVEES DE POLYNOMES
Soit le polynôme p(x)= x3 - 2 x2 + 5 x + 3 , sa dérivée est k(x) = 3 x2 - 4 x + 5 . Dans MATLAB
la dérivation s’obtient par l’instruction polyder (p).
17
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> p=conv(p1,p2)
p=
5 27 31 12 0
>> k=polyder(p)
k=
20 81 62 12
[q,d]=polyder(p1,p2)
q=
13 -6 -12
d=
1 8 16 0 0
9- PRIMITIVES DE POLYNOMES
Soit le polynôme p(x)= 6 x2 - x + 3 , sa primitive g(x) s’obtient par intégration, soit :
g(x) = 2 x3 – 0.5 x2 + 3 x + c , où c est la constante d’intégration. Dans MATLAB la primitive
s’obtient par l’instruction polyint (p,c).
D’après l’exemple ci-dessus, la constante c a été prise égale à 5. L’instruction polyint (p)
suppose que c=0.
18
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
1- Graphique 2D :
- A partir d’un ensemble de points
- En histogramme
- A partir d’une fonction y = f(x)
- A partir d’une équation paramétrique
- En coordonnées polaires
2- Graphique 3D :
- A partir d’un ensemble de points
- A partir d’une fonction z = f(x,y)
- A partir d’une équation paramétrique
- Pour les surfaces de révolution
- Apparence des graphiques 3D
1- GRAPHIQUE 2D
1-1 Graphique 2D à partir d’un ensemble de points
1-1-1 Description générale
MATLAB offre la fonction plot (x, y) qui permet de tracer des lignes reliant les points de
coordonnées (x,y). Soit par exemple
>> x=[-3 -1 0 2 5];
>> y=[2 -2 1.5 2 1];
>> plot(x,y)
19
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
20
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Essayons par exemple la commande : plot (X, Y, ’m o :’) qui veut dire que la couleur du
trait (m) est magenta, les points sont représentés par des petits cercles (o), et le style du
trait (:) est en pointillé.
Pour donner un titre pour les axes x et y, nous utilisons les fonctions xlabel et
ylabel :
Pour écrire un texte (ou un commentaire) sur la fenêtre graphique à une position
indiquée par les coordonnées x et y, nous utilisons la fonction text comme ceci :
MATLAB nous offre la possibilité de choisir par la souris le point à partir duquel
sera écrit le commentaire. Pour cela la commande gtext sera utilisée :
>> gtext ('commentaire’)
Pour mettre un quadrillage (une grille), utilisez la commande grid (ou grid on).
Pour l’enlever réutiliser la même fonction grid (ou grid off).
Pour définir les limites des axes il est possible d’utiliser la commande :
axis ([xmin xmax ymin ymax])
En utilisant les instructions suivantes, nous obtenons le graphe de la figure 3.
22
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> t= [1 2 3 4 5];
>> cor= [8.3 12.4 10 13.5 11.6];
>> bar(t,cor)
>> grid
>> title('Evolution de la corrosion 2010-2014')
>> xlabel('Année')
>> ylabel('Corrosion (um)')
>> axis([0 6 0 15])
23
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
24
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Il est évident que plus le nombre de points augmente plus la courbe devienne précise.
Choisissons un pas = π/10, nous obtiendrons un graphique plus précis (figure 7).
>> x=0:pi/10:2*pi;
>> y=sin(x);
>> plot(x,y)
>> plot(x,y,'b x -.')
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> hold on
>> plot(x,y1,'b-.',x,y2,'r-')
>> legend('sin(x)','cos(x)')
La fonction legend permet de mettre sur le graphe une légende indiquant le nom de
chaque graphe (figure 8).
25
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Remarque : Pour dissocier les graphes et les mettre dans des fenêtres différentes, on
utilise la commande figure.
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> plot(x,y1,'b-.')
>> title('y1 = sin(x)')
>> figure
>> plot(x,y2,'r-')
>> title('y2 = cos(x)')
26
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Pour dissocier les graphes dans la même fenêtre, on utilise la commande subplot.
>> x=0:pi/10:2*pi;
>> y1=sin(x);
>> y2=cos(x);
>> subplot(1,2,1)
>> plot(x,y1,'b-.')
>> title('y1 = sin(x)')
>> grid
>> subplot(1,2,2)
>> plot(x,y2,'r-')
>> title('y2 = cos(x)')
>> grid
Dans un autre exemple, traçons la fonction y = 3 sin (x) / x (figure 12), en suivant les
instructions :
27
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=-5*pi:pi/12:5*pi;
>> y=3*sin(x)./x;
>> plot(x,y,'-r')
>> xlabel('x')
>> ylabel('y')
>> title('y = 3 sin (x) / x')
>> grid
>> axis([-18 18 -1 3.5])
28
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
29
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Traçons par exemple l’arc AB du cercle de rayon r = 3, sachant que theta (A) = 60° et
theta (B) = 180° (figure 16). Suivons les instructions :
>> theta=pi/3:pi/12:pi;
>> r=3*ones(size(theta));
>> polar(theta,r,'r-')
>> title('Arc de cercle de rayon r = 3 et d''ouverture 120°')
30
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Pour tracer une rosace (figure 17), nous suivons les instructions :
>> theta=-pi:0.1:pi;
>> r=5*cos(2*theta);
>> polar(theta,r,'r-')
>> title('Rosace à quatre lobes')
31
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- GRAPHIQUE 3D
2-1 Graphique 3D à partir d’un ensemble de points
Pour tracer des lignes dans l’espace qui relient entre un ensemble de points, nous
utilisons la commande : plot3(x,y,z,’marqueur’), où x, y et z sont trois vecteurs de même
longueur. Les coordonnées de chaque point sont les éléments des vecteurs x, y et z. Le
marqueur désigne les caractéristiques des points et des lignes.
Par exemple, dessinons dans l’espace quatre lignes qui relient entre les points P 1, P2, P3,
P4, P5 (figure 18). Nous pouvons ainsi définir les composantes des vecteurs x, y et z.
P1 P2 P3 P4 P5
x 0 5 5 5 1
y 0 0 0 3 2
z 0 0 2 2 0
Pour réaliser cette ligne brisée, écrivons les instructions suivantes, et nous obtiendrons
par la suite le graphique de la figure 19.
>> x=-2:0.1:2;
>> y=-3:0.1:3;
>> [X,Y]=meshgrid(x,y);
>> Z=Y.*exp(-X.^2-Y.^2);
>> mesh(X,Y,Z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
>> title('Graphique 3D : z = y exp (-x²-y²)')
La commande meshc dessine la surface z = f(x,y) ainsi que la projection des isovaleurs de
la fonction z = f(x,y) dans le plan x-y (figure 21). Ces derniers représentent des contours
d’où le nom de meshc qui est la combinaison de mesh et contour.
>> meshc(X,Y,Z)
33
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
dessine dans la plan x-y les contours (isovaleurs) de la fonction z = f(x,y) (figure 22).
34
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> t=0:pi/100:10*pi;
>> x=2*cos(t);
>> y=2*sin(t);
>> z=0.5*t;
>> plot3(x,y,z)
>> grid
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
N est le nombre de points par circonférence. Si N n’est pas spécifié, MATLAB prend par
défaut la valeur N = 20.
La visualisation de la surface se fait avec l’instruction : >> surf (x,y,z)
35
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Pour un rayon R variable et un nombre N par défaut (figure 25), écrivons l’exemple
suivant :
>> t = 0:pi/10:pi;
>> [X,Y,Z] = cylinder(2-cos(t));
>> surf(X,Y,Z)
36
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2-4-2 Sphère
MATLAB offre la possibilité de tracer une sphère de rayon unitaire avec un nombre de
points de circonférence égal à N.
>> [X,Y,Z] = sphere(N);
>> x=-pi:pi/20:pi;
>> y=x;
>> [X,Y]=meshgrid(x,y);
>> Z=5*sin(X.^2+Y.^2)./(X.^2+Y.^2);
>> mesh(X,Y,Z)
>> view(45,45)
37
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
38
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
1- Vecteurs:
1-1 Opérations élémentaires sur les vecteurs
1-2 Opérations complémentaires sur les vecteurs
2- Matrices
2-1 Quelques matrices connues
2-2 Opérations dans une matrice
2-3 Opérations élémentaires entre les matrices
La partie essentielle la plus traitée par MATLAB est l’ensemble des vecteurs et des
matrices, d’où le nom ’’MATrix LABoratory’’. Le vecteur n’est autre qu’une matrice à une
ligne ou une colonne qui est utilisé aussi pour le traitement des polynômes et des
chaînes de caractères. Le calcul matriciel joue un rôle primordial dans la mécanique des
structures et son approche numérique par éléments finis. Il sert aussi à traiter les
différents tenseurs dans le domaine de la mécanique des milieux continus.
1- VECTEURS
Dans MATLAB les vecteurs s’écrivent sous la forme
>> x=[2 -1 0 3 8 5]
x=
2 -1 0 3 8 5
>> 2+x
ans =
-1 2 6 11
>> x-4
ans =
-7 -4 0 5
40
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x/2
ans =
-1.5000 0 2.0000
4.5000
>> x.*y
ans =
0 6 8
>>
>> x./y
ans =
0 1.5000 0.5000
>>
>> x.^y
ans =
0 9 16
41
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=[-1 0 4 3 9 -5 11 4] ;
>> sort(x)
ans =
-5 -1 0 3 4 4 9 11
42
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=[Link]
x=
0 3 6 9 12 15
>> x=4:7
x=
4 5 6 7
>> x = linspace ( x1 : x2 : n )
>> x=linspace(2,8,5)
x=
2.0000 3.5000 5.0000 6.5000 8.0000
Si le nombre d’éléments n’est pas spécifié, il est égal par défaut à 100.
>> x=linspace(2,8);
>> length(x)
ans =
100
43
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
x x
n
2
i
L’écart type s’écrit : s i 1
n
44
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- MATRICES
La matrice est un tableau à 2 dimensions composé de n lignes et m colonnes qui s’écrit
comme une suite de vecteurs lignes séparés par des points-virgules.
x=
4 -3 1
0 5 -2
45
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1
>> eye(4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> rand(5,4)
ans =
0.8147 0.0975 0.1576 0.1419
0.9058 0.2785 0.9706 0.4218
0.1270 0.5469 0.9572 0.9157
0.9134 0.9575 0.4854 0.7922
0.6324 0.9649 0.8003 0.9595
46
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
47
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Si l’on veut extraire une sous matrice contenant les éléments de la 2 e et de la 3e lignes et
de la 3e et de la 4e colonne, on écrit : >> x=[6 -1 4 8; 0 7 9 -5;3 0 -1 0 ]
x=
6 -1 4 8
0 7 9 -5
3 0 -1 0
>>
>> x(2:3,3:4)
ans =
9 -5
-1 0
Pour un cas général, on site l’exemple d’une matrice (4 x 7) où on veut extraire les
éléments de la 1ère et la 3e ligne, de la 1ère et la 3e colonne ainsi que les colonnes de la 5e
à la 7e .
>> x=[2 3 0 1 4 -2 5;3 1 -4 7 2 6 8;-1 0 3 9 -6 -4 0; 0 0 5 -2 4 0 1]
x=
2 3 0 1 4 -2 5
3 1 -4 7 2 6 8
-1 0 3 9 -6 -4 0
0 0 5 -2 4 0 1
>> y=x([1,3],[1,3,5:7])
y=
2 0 4 -2 5
-1 3 -6 -4 0
50
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2-2-12 Extraction d’un indice à partir d’un élément dans une matrice
MATLAB peut retrouver les indices (i,j) pour lesquels la condition Cond est vérifiée.
L’instruction s’écrit : >> [i,j] = find ( cond ) >> [i,j]=find(x==0)
i=
2
>> x=[6 -1 4 8; 0 7 9 -5;3 0 -1 0 ] 3
x= 3
6 -1 4 8 j=
0 7 9 -5 1
3 0 -1 0 2
>> 4
>> [i,j]=find(x==-5) >>
i= >> [i,j]=find(x>7)
2 i=
j= 2
4 1
>> j=
>> [i,j]=find(x==-1) 3
i= 4
1 >>
3 >> [i,j]=find(x<=-5)
j= i=
2 2
3 j=
4
51
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- Cas d’une matrice carrée : L’instruction diag d’une matrice carrée affiche un vecteur
constitué des éléments diagonaux de la matrice.
>> x=[-5 3 2;0 8 4;6 -1 7]
x=
-5 3 2
0 8 4
6 -1 7
>>
>> diag(x)
ans =
-5
8
7
52
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Remarque : Pour qu’une matrice soit inversible il faut qu’elle ne soit pas singulière,
c'est-à-dire son déterminant doit être différent de zéro.
>> y*x
ans =
1.0000 -0.0000 0
0 1.0000 0
0 0.0000 1.0000
54
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=[5 8; -2 4]
x=
5 8
-2 4
>> y=[-3 8; 7 5]
y=
-3 8
7 5
>> x+y
ans =
2 16
5 9
>> x-y
ans =
8 0
-9 -1
>> x=[5 8; -2 4]
x=
5 8
-2 4
>> y=[-3 8; 7 5]
y=
-3 8
7 5
>> x.*y
ans =
-15 64
-14 20
>> x./y
ans =
-1.6667 1.0000
-0.2857 0.8000
55
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> C=A*B
C=
6 -56 103 49
4 28 -20 -7
Remarques :
Pour réaliser le produit de deux matrices, il faut que le nombre de colonnes de la
première soit identique au nombre de lignes de la deuxième.
La matrice produit C a le même nombre de lignes que A et le même nombre de
colonnes que B.
Il faut noter que : A * B B * A , et s’il est possible de calculer à la fois A* B et
B* A , alors les matrices A et B doivent être obligatoirement carrées.
>> A=[ -1 0 ; 3 4]
A=
-1 0
3 4
>> B=[ 0 2;-3 -4]
B=
0 2
-3 -4
>> A*B
ans =
0 -2
-12 -10
>> B*A
ans =
6 8
-9 -16
56
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
où bien
>> A/B >> A*inv(B)
>> A=[5 4 -6;1 -2 3]
A=
5 4 -6
1 -2 3
>> C=A/B
C=
1.5303 -1.9394 0.0152
0.4545 -0.0909 -0.2727
>> D=A*inv(B)
D=
1.5303 -1.9394 0.0152
0.4545 -0.0909 -0.2727
57
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> C=[1 5 9]
C=
1 5 9
>> [A B]
ans =
4 -3 2 2 5
7 0 -1 -6 8
>> [A;C]
ans =
4 -3 2
7 0 -1
1 5 9
58
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> x=A\B
x=
2
5
1
>> x=inv(A)*B
x=
2.0000
5.0000
1.0000
59
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
MATLAB comme tout autre langage de programmation, traite les chaînes de caractères
ainsi que les dates et heures.
Le présent chapitre aborde les différentes manipulations sur les chaînes de caractères.
La chaîne de caractères A est considérée comme un vecteur ligne dont les composantes
sont les lettres de la chaine de caractères.
>> A='une dalle' ;
>> A(3)
ans =
e
>> A(4)
ans =
>> A(5)
ans =
d
Remarque : Le blanc d’espace est considéré comme une lettre. Dans l’exemple
précédent, le blanc représente la quatrième lettre.
1-2 Dimension d’une chaîne de caractères
Pour calculer la longueur d’une chaîne de caractères, on utilise l’instruction size ( A ).
>> size(A)
ans =
1 9
60
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Pour déclarer plusieurs chaines de caractères, chacune dans une ligne, on utilise
l’instruction *‘chaine1’ ;‘chaine2’ ;….+, à condition que toutes ces chaînes aient la
même longueur.
Remarque : Pour que toutes les chaînes aient la même longueur, on a ajouté deux
blancs à chacune des deux chaînes ’DDS’ et ‘MDS’. On aura 3 lignes et 5 colonnes.
Sans se soucier de l’ajout des blancs, il existe une deuxième méthode qui utilise
l’instruction Char(‘chaine1’ ;‘chaine2’ ;….)
>> A=char('Béton','DDS','MDS')
A=
Béton
DDS
MDS
>> size(A)
ans = 61
3 5
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> A(2,:)
ans =
DDS
Remarque : La majuscule et la minuscule d’une même lettre n’ont le même code ASCII.
>> abs('M')
ans =
77
>> abs('m')
ans =
109
Pour vérifier si une variable A est une chaîne de caractères ou non, on utilise l’instruction
isstr( A ). Si oui (chaîne de caractères), la réponse est 1, sinon la réponse est 0.
>> A='Plancher';
>> B=3.25;
>> isstr(A)
ans =
1
>> isstr(B)
ans =
0
62
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
63
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
On peut utiliser la commande strtrim pour éliminer les blancs de la chaîne B. Dans ces
condition A et B deviendront similaires et le résultat de la comparaison sera 1.
>> A='Mortier';
>> B=' Mortier ';
>> strcmp(A,strtrim(B))
ans =
1
Pour afficher l’annotation de chaque valeur, on utilise l’instruction repmat, comme suit
Afin de mieux contrôler le format des valeurs affichée, il existe la commande fprintf qui
s’écrit sous la syntaxe : fprintf (1 , ’%[Link]’ , valeurs).
1 signifie qu’on utilise les commandes de l’écran,
% est un symbole pour indiquer le format,
x est le nombre minimal de chiffres à afficher,
y est le nombre de chiffres qui apparaitront à droite du point décimal.
q spécifie l’approximation de la valeur (FIX, FLOOR, CEIL ou ROUND). Si on prend q=f , on
a choisit le format FIX.
Pour afficher les valeurs sous forme d’une colonne, on ajoute \n à la partie format.
65
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
5- DATES ET HEURES
5-1 Affichage de la date
Il suffit de taper date pour avoir le jour, le mois et l’année.
>> date
ans =
12-Jan-2015
>> clock
ans =
1.0e+003 *
2.0150 0.0010 0.0120 0.0050 0.0550 0.0496
>> fix(clock)
ans =
2015 1 12 5 59 31
67
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
M=rand(500);
t0=cputime; % temps initial
inv(M);
Editeur
tf=cputime; % temps final
delta_t=tf-t0
Méthode 2 : On peut utiliser les instructions tic, toc. La commande tic lance le
chronomètre, alors que toc permet de consulter le temps CPU écoulé depuis la
commande tic.
68
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
L’écriture des instructions MATLAB dans la fenêtre Command Window présente des
inconvénients dont on peut citer quelques uns :
1- Pour changer la valeur d’une variable, on est obligé de revenir à la commande qui
contient cette variable, la modifier et l’exécuter, ensuite exécuter toutes les autres
commandes qui suivent une par une.
2- Dans le cas où on veut appliquer à nouveau une application qui contient un nombre
important de lignes, on est obligé d’exécuter cette application ligne par ligne, ce qui est
fastidieux.
3- Si une erreur a été commise dans l’ordre des commandes, il faut refaire l’exécution
ligne par ligne.
4- Il est difficile de réaliser l’opération de débogage dans l’application.
5- Le temps de l’exécution est trop long.
Pour remédier à ces problèmes, il est préférable d’écrire l’ensemble de ces commandes,
qu’on appelle programme, dans l’éditeur M-File. Cela offre la possibilité d’exécuter en
une fois le programme, de changer ou de corriger n’importe quelle ligne, ensuite
exécuter le programme.
File
69
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
New
Blank M-file
D’une autre manière plus courte, on peut cliquer sur l’icone de la boite d’outil de
la fenêtre Editor (figure 3).
70
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Données
…..
Traitement
…..
Résultats
…..
Le programme est représenté dans le M-File de la figure 5. Il est enregistré sous le nom
de ‘’cylindre.m’’. Son exécution se fait à l’aide du bouton . Les résultats sont affichés
dans la fenêtre Command Window (figure 6).
Remarque : Si l’écriture d’une expression longue ne peut pas être enclavée dans une
seule ligne, il est possible de la diviser en plusieurs lignes en mettant à la fin de chaque
ligne au moins trois points.
Exemple 2 :
sin(pi/3)^2/cos(pi/3)^2)-(1-2*(5+sqrt(x)^5/(-2*x^3-x^2)^1+3*x) ;
sin(pi/3)^2/cos(pi/3)^2)- ...
(1-2*(5+sqrt(x)^5 .....
/(-2*x^3-x^2)^1+3*x) ;
72
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
>> a>7&b>7
ans =
1 Résultat vrai (1)
>> a>10&b>10
ans =
0 Résultat faux (0)
73
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
DONNEES RESULTATS
and or xor not not
A B
A&B A|B (A,B) ~A ~B
faux faux faux faux faux vrai vrai
faux vrai faux vrai vrai vrai faux
vrai faux faux vrai vrai faux vrai
vrai vrai vrai vrai faux faux faux
Tableau 3 Résultats des quatre opérateurs logiques sur les conditions A et B
74
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
4- INSTRUCTIONS CONDITIONNELLES
4-1 INSTRUCTIONS CONDITIONNELLES if
4-1-1 L’instruction ‘’ if – end ‘’
Cette instruction conditionnelle est schématisée par l’organigramme de la figure 7 et
l’algorithme de la figure 8.
75
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Solution :
1)- Organigramme : 2)- Algorithme :
Début
Lire : Ms, Mr
Calculer F : F=Ms/Mr
if F < 1.5
Afficher : ‘‘ Risque de renversement !! ’’
end
Afficher la valeur de F
Fin
76
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
77
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 5 : Reprenons l’exemple précédent, mais cette fois ci en affichant les deux
messages :
Si F >= 1.5 ; afficher : ‘‘ Pas de renversement. ’’
Si F < 1.5 ; afficher : ‘‘ Risque de renversement !! ’’
Solution :
1)- Organigramme : 2)- Algorithme :
78
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
79
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 6 : Soit la poutre représentée dans la figure 13 et chargée par deux forces
concentrées P1 et P2. Ecrire l’algorithme ensuite le programme MATLAB qui calcule
l’effort tranchant dans n’importe quelle abscisse x de la poutre.
80
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Solution :
1)- Algorithme :
81
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
82
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
4)- Résultats
83
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
84
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
5- BOUCLES
Quand le programme doit répéter ‘’n’’ fois un ensemble de commandes. Dans ces
conditions, boucles sont nécessaire pour accomplir ce genre de tâche.
ensemble de
commandes
Résultats
Solution :
Remarques :
1- Le pas ou l’incrément peut être positif ou négatif. Dans le cas où le pas n’est pas
indiqué, il vaudra 1.
85
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- Les indices i, j ne doivent pas être utilisés lorsqu’on travaille avec les nombres
complexes, du fait que i = j = sqrt (-1). On utilisera d’autres indices tels que k, l, m,
n, etc.
Solution :
Boucle principale
Boucle imbriquée
87
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 10 : Ecrire un programme qui somme les éléments d’un vecteur jusqu'à ce
qu’il trouve un élément <=0.
88
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 11 : Ecrire un programme qui somme les éléments d’une matrice jusqu'à ce
qu’il trouve un élément <=0, alors il saute à la ligne suivante.
Solution :
89
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Remarque 2 : Lorsque l’instruction ‘’ break ’’ est en dehors des boucles, elle va arrêter
l’exécution du programme.
Exemple 12 :
Exemple 13 : Ecrire un programme qui somme les éléments d’un vecteur en sautant les
éléments <=0.
90
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
6- DEBOGAGE
Lorsqu’un programme est un peu long ou complexe, il est possible de suivre son
évolution "pas à pas" pour comprendre son fonctionnement ou corriger des erreurs s’il
ne donne pas les résultats attendus a priori. On utilise pour cela le mode ‘’debug’’.
2)- En cliquant sur le bouton gauche de la figure 19. Pour enlever le point d’arrêt, on
clique sur l’icône de droite.
91
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
92
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
(1) (4)
(2) (5)
(3) (6)
Figure 26 Visualisation des étapes suivies par le programme
94
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
95
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
1- Fichiers de fonctions
2- Fonctions prédéfinies
3- Fonctions personnalisées
4- La commande feval
5- La commande fplot
6- La commande fzero
Dans un code en MATLAB, pour éviter de répéter l’écriture des formules longues, il est
préférable de définir des fonctions et de les utiliser en appelant leurs noms tout
simplement. Cela permet de Réduire la complexité du programme en le rendant plus
lisible et plus maniable. Même dans l’opération de débogage (corrections d’erreurs), les
bugs (erreurs) seront isolés et leur correction deviendra plus facile.
Ce chapitre présente les différents types de fonctions utilisées en MATLAB telles que :
les fichiers de fonctions.
les fonctions prédéfinies,
les fonctions personnalisées,
Les opérations essentielles sur les fonctions sont présentées telles que les commandes :
feval, fplot et fzero.
1- FICHIER DE FONCTION
1-1 Définition
La fonction utilise un ensemble de données (x, y, z, t, …) pour les calculer et rendre les
résultats (w1, w2, …) comme illustré dans la figure 1.
Le texte de la fonction est écrit dans un fichier M-file alloué spécialement à cette
fonction, selon la syntaxe :
96
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
résultats données
Le programme principal écrit dans un autre fichier M-file fait appel à cette fonction à
chaque fois qu’il en a besoin.
97
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 2 :
On dispose de 3 billes en acier, de rayons respectivement 1 cm, 1.5 cm et 2 cm. On se
propose d’écrire un programme en MATLAB qui fait appel à la fonction ‘’ spher.m ’’ pour
calculer le volume en cm3, l’aire en cm2 et la masse en gr de chaque bille. La masse
volumique de l’acier est ρ = 7.85 gr/cm3.
Solution :
Le programme principal portant le nom ‘’ bille.m ’’ est représenté dans la figure 4. Il fait
appel à la fonction ‘’ spher.m ’’ pour faire les calculs de chaque bille. Les résultats sont
affichés dans la fenêtre ‘’ Command Window ’’ (figure 5).
98
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Figure 7 Variables locales de (fichier fonction) non reconnues par ‘’Command Window ’’
Remarque : Il est possible de rendre une ou plusieurs variables locales visibles par le
programme principal et les autres fichiers ‘’fonction’’, et ce en les transformant en des
variables globales selon la syntaxe :
99
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- FONCTIONS PREDEFINIES
Ce genre de fonction n’a pas besoin d’un fichier de fonction pour la définir puisqu’elle est
déjà prédéfinie par MATLAB. On peut citer par exemple les fonctions sqrt, sin, cos, tang,
log, exp, min, max, abs, fix, etc. On peut utiliser ces fonction dans les ‘’command
window’’, les M-file et les fichiers de fonctions. Cependant, la fonction prédéfinie donne
un seul résultat et ce contrairement au fichier de fonction qui peut donner plusieurs
résultats (w1, w2, …, etc.).
Exemple 4 : La fonction : sin (3x)
100
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
3- FONCTIONS PERSONALISEES
3-1 Fonctions anonymes
Similairement aux fonctions prédéfinies, les fonctions anonymes n’ont pas besoin d’un
fichier de fonction pour les définir. Pour cela on utilisera la syntaxe :
101
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
ex
Exemple 8 : Fonction à une seule variable : f x
x2 5
Si x est un vecteur, la fonction sera modifiée pour qu’elle puisse être calculée élément
par élément,
102
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Remarques :
la fonction ‘inline‘ est limitée par rapport à la fonction ‘anonyme‘. Cette dernière
peut appeler toutes les autres fonctions ( ‘v’ a appelé ‘w’ ) alors que la fonction
‘inline‘ ne peut appeler ni une autre fonction ‘inline‘ ni une fonction ‘anonyme‘, elle
peut seulement appeler un fichier de fonction.
les fonctions ‘anonymes‘ v et w et les fonctions ‘inline‘ f1 et f2 sont affichées dans le
‘’Workspace’’ (figure 9). Cependant la fonction spher n’est pas affichée dans le
‘’workspace’’ du fait qu’elle est enregistrée dans un fichier indépendant ‘’spher.m’’.
103
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
4- LA COMMANDE FEVAL
Feval (function evaluate) permet de calculer (évaluer) la fonction pour des valeurs
données. Cette commande sous la forme :
A noter que le nom de fonction est introduit sous forme de chaine de caractères.
104
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
ex
Exemple 12 : feval pour une fonction inline à une seule variable : f x
x2 5
5- LA COMMANDE FPLOT
Pour tracer le graphe d’une fonction dans l’intervalle *a b+, on utilise la commande
105
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
6- LA COMMANDE FZERO
Soit f(x) une fonction à une seule variable. On se propose de calculer la racine de
l’équation f(x) = 0, la plus proche d’une valeur x0 donnée. La syntaxe est la suivante :
106
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
107
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Ce chapitre traite l’utilisation des fichiers pour le traitement des données et des résultats
à partir d’une application MATLAB. On abordera :
l’importation des données à partir d’un fichier,
l’exportation des données vers un fichier Excel,
manipulation des fichiers.
a- donné[Link] b- donné[Link]
Figure 1 Fichiers de données
108
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
3- placer le curseur entre les crochets, coller les données et appuyer sur <entrer>
(figure 2).
Figure 3 Utilisation du
menu ‘’Import Data’’
109
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- La fenêtre ‘’Import Wizard’’ apparait. Laisser l’option par défaut ‘’Space’’ (figure 5),
ensuite cliquer sur <Next>.
3- Cocher sur la variable data qui est une matrice (6x3) (figure 6), la renommer ‘’A’’ au
lieu de ‘’data’’ (figure 7)et cliquer sur <finish>.
110
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
4- On obtient la variable ‘’A’’ dans le ‘’workspace’’ ( figure 8). En double cliquant sur A,
on peut visualiser les éléments de la matrice A (figure 9).
En ce qui concerne l’importation des données à partir des fichiers Excel (figure 11), la
commande utilisée est xlsread,
N° de la feuille Champ de cellules contenant les données
112
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Exemple 1 : Exportation d’une matrice aléatoire A (2 x 5) vers le fichier ‘[Link]’ (figure 12).
‘ [Link] ’
Figure 12 Exportation de données vers un fichier Excel
113
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
a- Code ‘‘ es_fich.m ’’
114
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
a- Code ‘‘ es_fich.m ’’
116
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- Exemple d’application
a- Bouton b- Menu
117
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
d- Editeur de texte
e- Liste de choix
f- Bouton Radio
118
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
2- EXEMPLE D’APPLICATION
On se propose de construite une application MATLAB avec une interface graphique qui
calcule les efforts T et M dans une abscisse quelconque x d’une poutre isostatique
uniformément chargée (figure 2).
119
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
120
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
On écrit du texte à coté de chaque edit Text, on change le contenu des boutons et edit
Text et on ajoute le titre.
121
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
Etape 3 : Dans la fenêtre des propriétés des objets, donner leur nom dans la case Tag :
L_in, q_in, x_in, T_out, M_out, bout_calcul, bout_efface.
Enregistrer Le fichier sous le nom : TM.m
Le programme contiendra par défaut les codes de chaque fonction.
122
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
123
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)
124