0% ont trouvé ce document utile (0 vote)
530 vues124 pages

Introduction à la programmation MATLAB

Ce document présente une introduction à MATLAB. Il décrit les fonctionnalités de base de MATLAB telles que son environnement, les opérations arithmétiques élémentaires et les fonctions mathématiques prédéfinies. Le document contient également des informations sur les formats d'affichage et les nombres complexes dans MATLAB.

Transféré par

Bouz. Tima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
530 vues124 pages

Introduction à la programmation MATLAB

Ce document présente une introduction à MATLAB. Il décrit les fonctionnalités de base de MATLAB telles que son environnement, les opérations arithmétiques élémentaires et les fonctions mathématiques prédéfinies. Le document contient également des informations sur les formats d'affichage et les nombres complexes dans MATLAB.

Transféré par

Bouz. Tima
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

CHAPITRE I: Programmer avec Matlab


SECTION I: Introduction à 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.

Figure 1 L’environnement MATLAB

3- OPERATIONS ELEMENTAIRES AVEC MATLAB


3-1 Opérations Arithmétiques
Le moyen le plus simple d’utiliser MATLAB est d’écrire directement dans la fenêtre de
commande (Command Window) juste après le curseur (prompt) >>. Les opérations de
base sont résumées dans le tableau 1.

Tableau 1 Les opérations arithmétiques avec Matlab

Quelques exemples d’utilisation de ces opérateurs sont donnés ci-après :

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.

L’ordre de priorité des opérations est :


1- Parenthèses,
2- puissance,
3- multiplication et division,
4- addition et soustraction.
Dans l’exemple qui suit

>> 70-(5*2)+2^3
ans =
68

Les calculs se font selon l’ordre : 5*2=10, 2^3=8, et la fin 70-10+8=68

3-2 Quelques fonctions prédéfinies


MATLAB possède des fonctions intégrées telles que le sinus « sin(x) », la racine carrée
« sqrt(x) », l’exponentiel « exp(x) », le logarithme népérien « log(x) », le logarithme
décimal « log10(x) », etc.

3
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> cos (pi/3)


ans =
0.5000
>> cosd(60)
ans =
0.5000
>> sqrt(25)
ans =
5
>> exp(1)
ans =
2.7183
>> log(exp(1))
ans =
1
>> log10(100)
ans =
2

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.

Angle a (°) (rad) Angle a (°) (rad)


Fonction Trigonométrique Fonction Inverse
Désignation Symbole Désignation Symbole
sinus sind sin arc sinus asind asin
cosinus cosd cos arc cosinus acosd acos
tangente tand tan arc tangente atand atan
cotangente cotd cot arc cotangente acotd acot
sécante secd sec arc sécante asecd asec
cosécante cscd csc arc cosécante acscd acs
Tableau 2 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

Parmi d’autres fonctions intégrées dans MATLAB, on peut citer :


abs (x) : renvoie la valeur absolue de x,
>> abs(-3.4)
ans =
3.4000

round (x) : renvoie l’entier le plus proche de x,

>> 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 (x) : renvoie l’entier le plus proche de x et qui tend vers 0,

>> fix(1.6)
ans =
1
>> fix(-2.9)
ans =
-2

sign (x) : renvoie 1 si x > 0, -1 si x < 0, 0 si x=0,

>> 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.

Figure 2 Utilisation du symbole % et de la fonction help dans MATLAB

6
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

3-3 Formats d’affichage


D’après les exemples précédents on remarque que les résultats de calcul sont par défaut
affichés en format short avec 4 chiffres après la virgule. Pour afficher davantage de
chiffres utiliser la commande format long (15 chiffres après la virgule). Pour retourner à
l’affichage par défaut, utiliser la commande format short.

>> 14/3
ans =
4.6667
>> format long
>> 14/3
ans =
4.666666666666667
>> format short
>> 14/3
ans =
4.6667

Pour la notation scientifique, MATLAB dispose du format e (exposant de 10).


>> format short e
>> 3247/0.043
ans =
7.5512e+004
>> format long e
>> 3247/0.043
ans =
7.551162790697675e+004
>> pi
ans =
3.141592653589793e+000

En utilisant format rat, MATLAB fournit aussi avec approximation raisonnable, la fraction
la plus proche d’un nombre réel donné.

>> format rat


>> pi

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

>> format compact


>> sin(pi/5)
ans =
0.5878
>> exp(1.6)
ans =
4.9530

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

3-4 Les nombres complexes

Le nombre  1 est stocké par MATLAB dans les constantes i et j. Essayons

>> i^2
ans =
-1
et
>> j^2
ans =
-1

Nous pouvons définir un nombre complexe de façon traditionnelle

>> z1=3+4i
z1 =
3.0000 + 4.0000i

La partie réelle de z1 est extraite par


>> real(z1)
ans =
3

8
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

sa partie imaginaire
>> imag(z1)
ans =
4

son module
>> abs(z1)
ans =
5

et son argument exprimé en radian


>> angle(z1)
ans =
0.9273

Soit z2 le conjugué de z1, il s’écrit

>> z2=conj(z1)
z2 =
3.0000 - 4.0000i

On vérifie que le module de z1 se calcule par

>> sqrt(z1*conj(z1))
ans =
5

Soit z3 un nombre complexe,

z3=5+2i
z3 =
5.0000 + 2.0000i

Nous écrivons les opérations usuelles entre z1 et z3 ; d’addition

>> 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

3-5 Les variables


Dans MATLAB on définit une variable sans se préoccuper du type. Le nom d’une variable
ne doit contenir que des caractères alphanumériques ou le symbole ’_’ (underscore), et
doit commencer par un alphabet. Nous devons aussi faire attention aux majuscules car le
MATLAB est sensible à la casse (A et a sont deux identifiants différents).

>> 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

Your variables are:

A a ans

>> whos
Name Size Bytes Class Attributes

A 1x1 8 double
a 1x1 8 double
ans 1x1 8 double

Dans l’exemple de la figure 3, soient a, b, c trois variables auxquelles on a affecté les


valeurs : a=3, b=a+1=4, et c=8.
10
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

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.

Figure 3 Exemple de détermination de 3 variables dans MATLAB

L’instruction ‘ clear a ‘ efface de la mémoire de l’ordinateur la valeur affectée à la


variable a, la fenêtre ‘Workspace’ gardera seulement les valeurs de b et c (figure 4). Si
on applique ‘ clear all ‘
le ‘Workspace’ ne gardera aucune valeur de variable.

Figure 4 Suppression de la variable ‘ a ‘ de la mémoire de MATLAB


11
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

En validant l’instruction ‘ clc ‘, seulement le contenu de ‘Command Window’ sera effacé,


mais la mémoire gardera toujours les valeurs de b et c (figure 5).

Figure 5 La commande ‘ clc ‘efface le contenu de ‘Command Window’

12
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION II: Opérations sur les Polynômes


1- Représentation d’un Polynôme
2- Racines d’un Polynôme
3- Evaluation d’un Polynôme
4- Représentation Graphique d’un Polynôme
5- Calcul des Coefficients Polynomiaux à Partir des Racines
6- Addition et Soustraction de Polynômes
7- Multiplication et Division de Polynômes
8- Dérivées de Polynômes
9- Primitives de Polynômes

1- REPRESENTATION D’UN POLYNOME


Le polynôme est représenté dans MATLAB sous la forme d’un vecteur ligne dont les
composantes sont les coefficients du polynôme, dans l’ordre des puissances
décroissantes. Par exemple, le polynôme
2 x² + x - 6
est mémorisé par le vecteur ligne
>> a=[2 1 -6];

2- RACINES D’UN POLYNOME


Les racines qui annulent le polynôme : 2 x² + x - 6 = 0, s’obtiennent par la commande
root

>> b=roots(a)
b=
-2.0000
1.500

Les valeurs des racines sont stockées dans le vecteur b.


Essayons l’équation : x² + 2 x + 5 = 0 . Son discriminant D=-16 < 0. Les deux racines sont
complexes :

>> a=[1 2 5];


>> b=roots(a)
b=
-1.0000 + 2.0000i
-1.0000 - 2.0000i
13
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

L’équation suivante donne une solution réelle et deux complexes : 2 x3 - 10 x2 + 13 x - 20


=0

>> a=[2 -10 13 -20];


>> b=roots(a)
b=
4.0000
0.5000 + 1.5000i
0.5000 - 1.5000i

3- EVALUATION D’UN POLYNOME


Soit le polynôme : p(x) = 7 x2 – 5 x + 2 . MATLAB permet d’évaluer ce polynôme pour
plusieurs valeurs de la variable x, soient par exemple les quatre valeurs : x = -1.5, 0, 2, 4.
La commande utilisée est polyval (p,[x1 x2 …+).

>> p=[7 -5 2];


>> polyval(p,[-1.5 0 2 4])
ans =
25.2500 2.0000 20.0000 94.0000

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

4- REPRESENTATION GRAPHIQUE D’UN POLYNOME


Prenons l’exemple du polynôme : 2 x3 - 5 x2 – 4 x + 3. Pour une bonne représentation
graphique, le domaine de traçage doit contenir les racines qui annulent ce polynôme.
Résolvons l’équation : 2 x3 - 5 x2 – 4 x + 3 = 0

>> a=[2 -5 -4 3];


>> b=roots(a)
b=
3.0000
-1.0000
0.5000

Choisissons le domaine : -2 ≤ x ≤ +4 avec un pas de 0,1. Evaluons ce polynôme en


utilisant la commande polyval (a,x) et traçons son graphique plot (x,y) :

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')

On obtient le graphique représenté dans la figure 1.

Figure 1 Graphique d’un polynôme du 3e degrés


Remarque
Le graphique de la figure 1 peut être sauvegardé dans le répertoire de travail sous un
nom quelconque avec le suffixe ([Link]). Dans notre exemple, il a été sauvegardé sous
le nom : [Link].
5- CALCUL DES COEFFICIENTS POLYNOMIAUX A PARTIR DES RACINES
Les coefficients d’un polynôme peuvent être retrouvés à partir de ses racines. Ainsi le
polynôme p(x) = (x+0.5) ∙ (x) ∙ (x-2) ∙ (x-4), ayant les racines r = [-0.5, 0, 2, 4+ peut s’écrire
sous la forme :
p(x) = x4 - 5.5 x3 + 5 x2 + 4 x . Pour ce faire nous utilisons l’instruction poly(r).
>> r=[-0.5 0 2 4]; % r est le vecteur ligne qui représente
>> % les racines du polynôme p(x)
>> c=poly(r)
c=
1.0000 -5.5000 5.0000 4.0000 0
15
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

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.

>> e=[-1 -1 3];


>> f=poly(e)
f=
1 -1 -5 -3
Le polynôme s’écrira bien sous la forme : p(x) = (x+1)²∙(x-3) = x3 - x2 - 5 x – 3

6- ADDITION ET SOUSTRACTION DE POLYNOMES


Il suffit d’additionner et de soustraire les vecteurs lignes représentant les coefficients de
ces deux polynômes, à condition que les deux vecteurs aient la même dimension qui est
celle du polynôme de degrés supérieur.
Soient les deux polynômes a(x) = 3 x² - 5 x + 4 et b(x) = x + 2 ; nous aurons
c(x) = a(x) + b(x) = 3 x² - 4 x + 6 , et d(x) = a(x) - b(x) = 3 x² - 6 x + 2

>> a=[3 -5 4];


>> b=[0 1 2];
>> c=a+b
c=
3 -4 6
>> d=a-b
d=
3 -6 2

7- MULTIPLICATION ET DIVISION DE POLYNOMES


La multiplication de deux polynômes est facilement réalisée par MATLAB en opérant sur
les vecteurs lignes de leurs coefficients. Considérons la multiplication
(2 x2 + 3 x + 1) ∙ (5 x - 2) = 10 x3 + 11 x2 - x - 2
Dans MATLAB nous obtenons le même résultat par convolution.
>> p1=[2 3 1];
>> p2=[5 -2];
>> p=conv(p1,p2)
p=
10 11 -1 -2
16
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

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

Le vecteur ligne Q contient les coefficients du polynôme quotient, et le vecteur ligne R


ceux du polynôme reste. D’après l’exemple précédent p1(x) divise entièrement p(x) ; Q
contient les coefficients de p2(x) et tous les éléments de R sont égaux à zéro.
Divisons le polynôme g(x) = 10 x3 + 15 x2 - 4 par le polynôme p1(x) = (2 x2 + 3 x + 1) nous
obtiendrons

>> g=[10 15 0 -4];


>> [Q, R]=deconv(g,p1)
Q=
5 0
R=
0 0 -5 -4

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).

>> p=[1 -2 5 3];


>> k=polyder(p)
k=
3 -4 5

Soient les deux polynômes p1(x)= 5 x2 + 7 x + 3 , p2(x)= x2 + 4 x .


La dérivée du produit (p1(x) ∙ p2(x)) s’obtient dans MATLAB par

17
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> p1=[5 7 3];


>> p2=[1 4 0];
>> k=polyder(p1,p2)
k=
20 81 62 12

Donc la dérivée du produit (p1(x) ∙ p2(x)) s’écrit : k(x) = 20 x3 +81 x2 + 62 x + 12.


Cela peut être vérifié par

>> p=conv(p1,p2)
p=
5 27 31 12 0
>> k=polyder(p)
k=
20 81 62 12

La dérivée du rapport (p1(x) / p2(x)) s’écrit dans MATLAB sous la forme

[q,d]=polyder(p1,p2)
q=
13 -6 -12
d=
1 8 16 0 0

Où q et d sont respectivement le numérateur et le dénominateur de la dérivée


résultante k(x).
k(x) = (13 x2 - 6 x – 12) / (x4 + 8 x3 + 16 x2)

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).

>> p=[6 -1 3];


>> polyint(p,5)
ans =
2.0000 -0.5000 3.0000 5.0000

D’après l’exemple ci-dessus, la constante c a été prise égale à 5. L’instruction polyint (p)
suppose que c=0.

>> p=[6 -1 3];


>> polyint(p)
ans =
2.0000 -0.5000 3.0000 0

18
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION III: Les Graphiques

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

Dans le domaine technologique en général et spécialement en génie civil, le graphique


présente un moyen très efficace pour étudier un phénomène quelconque, et par la suite
comprendre et interpréter facilement les paramètres influençant sur ce phénomène. A
cet égard, MATLAB offre une bibliothèque très riche pour manipuler les graphiques en
2D et 3D d’une manière très aisée.
Le but de ce chapitre est de présenter les principes de base pour une représentation
graphique dans MATLAB.

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)

On obtient le graphe suivant

19
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 1 Graphique en segments de droites reliant 5 points

1-1-2 Marqueur d’un graphique


Pour une représentation graphique meilleure, MATLAB offre la possibilité d’ajouter à
l’instruction plot un autre argument (qu’on peut appeler un marqueur) de type chaine de
caractère, comme suit :
plot (X, Y, ’marqueur’)
Le contenu du marqueur est une combinaison d’un ensemble de caractères spéciaux
rassemblés dans le tableau 1.

Tableau 1 Propriétés des marqueurs

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é.

>> x=[-3 -1 0 2 5];


>> y=[2 -2 1.5 2 1];
>> plot(x,y,'m o :')

Les résultats sont représentés dans la figure 2.

Figure 2 Graphique de points contenant un marqueur prédéfini

1-1-3 Annotation d’un graphique


MATLAB offre la possibilité de descriptions textuelles aidant l’utilisateur à comprendre la
signification du graphique, telles que :
 Pour donner un titre à une figure représentant un graphique nous utilisons la
fonction title comme suit :

>> title ('titre de la figure')

 Pour donner un titre pour les axes x et y, nous utilisons les fonctions xlabel et
ylabel :

>> xlabel ('nom de l’axe x')


>> ylabel ('nom de l’axe y')
21
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

 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 :

>> text (x, y, 'commentaire’)

 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.

>> x=[-3 -1 0 2 5];


>> y=[2 -2 1.5 2 1];
>> plot(x,y,'m o :')
>> grid
>> title('Moment fléchissant')
>> xlabel('x(m)')
>> ylabel('M(KN.m)')
>> text(-1.5,-1.7,'Moment min')
>> axis([-4 6 -3 3])

Figure 3 Graphique de points avec annotation

22
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Remarque : Dans la figure sauvegardée sous un nom quelconque ‘’[Link]’’, nous


pouvons changer les caractéristiques du graphe (le style du trait, son épaisseur, sa
couleur, la police des caractères, etc.) et ce en utilisant Edit Plot qui se trouve dans la
fenêtre Tools du [Link] (figure 4).

Figure 4 Modification des caractéristiques d’un graphique

1-2 Graphique 2D en histogrammes


MATLAB utilise la fonction bar pour tracer des histogrammes sous forme de bâtons.
L’exemple suivant représente l’évolution de l’épaisseur corrodé en micromètre d’une
structure métallique durant les cinq dernières années (figure 5).

>> 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)

Figure 5 Evolution en histogramme de la corrosion d’une structure métallique

1-3 Graphique 2D à partir d’une fonction y = f(x)


Essayons de dessiner la fonction y=sin(x) pour x = *0 ... 2π+ avec un pas = π/5. Le graphe
représenté dans la figure 6 est moins précis à cause du nombre faible des points du
graphe.
>> x=0:pi/5:2*pi;
>> y=sin(x);
>> plot(x,y)
>> plot(x,y,'b x -.')

Figure 6 Représentation de la fonction sin(x) avec un pas de π/5

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 -.')

Figure 7 Représentation de la fonction sin(x) avec un pas de π/10

La commande hold on permet l’affichage de plusieurs graphiques dans la même figure.


Pour annuler son effet il suffit d’écrire hold off.
Par exemple pour dessiner la courbe des deux fonctions sin(x) et cos(x) dans la même
figure, on peut écrire :

>> 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)

Figure 8 Représentation des fonctions sin(x) et cos(x)

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)')

Figure 9 Dissociation de deux


graphes par la commande figure

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.

Si par exemple les deux graphes


sont l’un à coté de l’autre, on
aura une ligne et deux colonnes
(figure 10).
Pour dessiner le 1er graphe, on
utilise l’instruction :
subplot (1, 2, 1)

nbre de lignes n° de la case occupée


nbre de colonnes
Figure 10 Deux graphes disposés sur la même ligne

Les instructions s’écrivent de la manière suivante :

>> 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

Figure 11 Deux graphes dans une même fenêtre

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])

Remarque : ne pas oublier le point devant les opérateurs multiplication, division et


puissance : « .* , ./ , .^ »
Le même graphe (figure 12) est obtenu par une autre méthode où MATLAB permet
d’entrer une fonction sous forme d’une chaîne de caractères :
>> x=-5*pi:pi/12:5*pi;
>> f='3*sin(x)./x';
>> y=eval(f,x);
>> plot(x,y,'-r')
>> xlabel('x')
>> ylabel('y')
>> title('y = 3 sin (x) / x')
>> grid
>> axis([-18 18 -1 3.5])

Figure 12 Graphique de la fonction : 3 sin(x) / x

1-4 Graphique 2D à partir d’une équation paramétrique


Traçons l’ellipse ayant pour équation paramétrique : x = 4 cos(t); y = sin(t) (figure 13).

28
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> t = 0 : pi/100 : 2*pi;


>> x = 4*cos(t);
>> y = sin(t);
>> plot ( x , y,'-b' )
>> title('Ellipse : x²/16 + y² = 1')
>> xlabel('x = 4 cos(t)')
>> ylabel('x = sin(t)')
>> grid
>> axis([-4.5 4.5 -1.5 1.5])

Figure 13 Graphique d’une ellipse (courbe paramétrique)

Essayons maintenant de tracer la courbe paramétrique « Lemniscate de Bernoulli »


2t 2 t3
ayant pour équations : x  ; y  (figure 14).
1 t 4 1 t4
>> t=-100:0.1:100;
>> x=(2*t)./(1+t.^4);
>> y=(2*t.^3)./(1+t.^4);
>> plot(x,y,'-b')
>> xlabel('x')
>> ylabel('y')
>> title('Lemniscate de Bernoulli')
>> grid

Figure 14 Lemniscate de Bernoulli (courbe paramétrique)

29
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1-5 Graphique 2D en coordonnées polaires


Supposons que nous voulions tracer l’arc AB d’un cercle (figure 15). Nous pouvons
utiliser la fonction plot en coordonnées cartésiennes. Cependant, pour ce type de
graphique, les coordonnées polaires semblent plus naturelles. MATLAB dispose de la
fonction polar qui s’écrit sous la forme

>> polar (theta, r, 'marqueur')

Où r est le rayon du cercle,


theta est l’angle que fait le rayon avec l’horizontale en suivant le sens
trigonométrique.
marqueur est le style du dessin.

Figure 15 Arc de cercle AB en coordonnées polaires (r, theta)

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°')

Figure 16 Traçage d’un 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')

Figure 17 Traçage d’une rosace à quatre lobes


Pour tracer une spirale (figure 18), nous suivons les instructions :
>> theta=0:pi/10:5*pi;
>> r=2*theta;
>> polar(theta,r,'r-')
>> title('Spirale d''Archimède')

Figure 18 Traçage d’une spirale d’Archimède

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

Figure 18 Dessin 3D : Ligne brisée P1P2P3P4P5

Pour réaliser cette ligne brisée, écrivons les instructions suivantes, et nous obtiendrons
par la suite le graphique de la figure 19.

>> x=[0 5 5 5 1];


>> y=[0 0 0 3 2];
>> z=[0 0 2 2 0];
>> plot3(x,y,z,'-r o')
>> grid
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')
>> title('Dessin de lignes
dans l''espace')

Figure 19 Dessin 3D : Ligne brisée réalisée par MATLAB


32
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-2 Graphique 3D à partir d’une fonction z = f(x,y)


Traçons par exemple la fonction à deux variable z = y exp (-x²-y²) pour x variant de -2 à +2
avec un pas de 0.1 et y variant de -3 à +3 avec un pas de 0.1. Tout d’abord nous générons
la matrice *X,Y+ qui représente l’ensemble des points (x,y) appartenant au plan x-y pour
lesquels sera dessiné le graphique z = f(x,y). L’instruction utilisée est meshgrid. Par la
suite, nous dessinons la surface z = f(x,y) en utilisant la commande mesh où la
représentation est en forme de maillage. Nous suivons les instructions :

>> 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²)')

Figure 20 Dessin 3D : Surface z = f (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)

Figure 21 Surface z = f (x,y) avec ses contours dans le plan x-y


L’instruction
>> contour(X,Y,Z)

dessine dans la plan x-y les contours (isovaleurs) de la fonction z = f(x,y) (figure 22).

Figure 22 Isovaleurs de la fonction z = f (x,y) dans le plan x-y

34
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-3 Graphique 3D à partir d’une équation paramétrique


Nous proposons dans cet exemple le tracé d’une hélice circulaire (figure 23) dont
l’équation paramétrique est : x = 2 cos (t) ; y = 2 sin (t) ; z = t/2.

>> 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')

Figure 23 Représentation d’une hélice à partir d’une équation paramétrique

2-4 Graphique 3D pour les surfaces de révolution


2-4-1 Cylindres
MATLAB permet de tracer une surface de révolution autour de l’axe z (par défaut) sur
une hauteur égale à l’unité. Le rayon R de la surface de révolution peut varier le long de
l’axe z, R = f(z). La syntaxe utilisée est :

>> [X,Y,Z] = cylinder(R,N);

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)

Essayons l’exemple d’un cylindre de rayon R = 3 et de nombre de points de circonférence


N =100 (figure 24).

>> [X,Y,Z] = cylinder(3,100);


>> surf(X,Y,Z)
>> xlabel('x')
>> ylabel('y')
>> zlabel('z')

35
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 24 Cylindre de rayon R = 3, avec 100 points de circonférence

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)

Figure 25 Surface de révolution avec un rayon variant


selon une fonction sinusoïdale

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);

Essayons l’exemple suivant (figure 26) :


>> [X,Y,Z] = sphere(30);
>> surf(X,Y,Z)
>> axis equal

Figure 26 Représentation d’une sphère avec N=30

2-5 Apparence des Graphiques 3D


MATLAB offre la possibilité de spécifier le point de vue d’un objet spatial en introduisant
les angles en degrés de l’azimute AZ et de l’élévation EL (figure 27). L’instruction utilisée
est : view (AZ, EL)

>> 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)

Figure 27 Les deux paramètres (AZ, EL) d’une vue 3D

37
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

a- AZ = 45°, EL = 45° b- AZ = 0, EL = 45°

c- AZ = 45°, EL = 0 d- AZ = 45°, EL = 70°

e- AZ = 45°, EL = 90° f- AZ = 45°, EL = -45°

Figure 28 Différentes vues d’un graphique spatial ’’sinus cardinal’’

38
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION IV: Vecteurs et Matrices

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

Ou bien sous la forme


>> x=[2,-1,0,3,8,5]
x=
2 -1 0 3 8 5

1-1 Opérations élémentaires sur les vecteurs


1-1-1 Addition et soustraction de deux vecteurs
Ces opérations se font élément par élément pour les vecteurs de même dimension.
>> x=[-3 0 4 9];
>> y=[1 5 3 -7];
>> x+y
ans =
-2 5 7 2
>> x-y
ans =
-4 -5 1 16
39
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Remarque : Après exécution des instructions ci-dessus, le workspace stocke les 3


vecteurs : x, y et ans = x-y (figure 1).
En double-cliquant sur la variable y par exemple, on affiche un tableau ligne contenant
les composantes de y (figure 2).

Figure 1 Stockage dans le workspace des vecteurs x, y, ans

Figure 2 Editeur du vecteur ligne y

1-1-2 Addition et soustraction d’un scalaire


Le scalaire est ajouté ou retranché à toutes les composantes du vecteur.

>> 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)

1-1-3 Multiplication et division par un scalaire


Cette opération est réalisée pour tous les éléments du vecteur.
>> 3*x
ans =
-9 0 12 27

>> x/2
ans =
-1.5000 0 2.0000
4.5000

1-1-4 Opérations élément par élément


Les opérateurs (* / ^) doivent être précédés par un point (.).

>> x=[0 3 2];y=[1 2 4];

>> x.*y
ans =
0 6 8
>>
>> x./y
ans =
0 1.5000 0.5000
>>
>> x.^y
ans =
0 9 16

1-2 Opérations complémentaires sur les vecteurs


1-2-1 Extraction d’un élément à partir d’un vecteur
Les éléments d’un vecteur sont identifiés par leurs indices.
>> x=[3 5 -1 6 0 -4 1];
>> x(2)
ans =
5
>>
>> x(6)
ans =
-4

41
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1-2-2 Détermination des valeurs minimale et maximale des éléments


d’un vecteur
Les éléments d’un vecteur sont identifiés par leurs indices.
>> x=[3 5 -1 6 0 -4 1];
>>
>> a=max(x)
a=
6
>>
>> b=min(x)
b=
-4

1-2-3 Extraction d’un indice à partir d’un élément dans un vecteur


MATLAB peut retrouver l’indice d’un élément de vecteur à partir de sa valeur.

>> x=[-1 0 4 3 9 -5 11 4]; >> x=[-1 5 0 4 7 2];


>> i=find(x==4) >> i=find(x>4)
i= i=
3 8 2 5
>> >> i=find(x<=2)
>> i=find(x==11) i=
i= 1 3 6
7

1-2-4 Classement des éléments d’un vecteur selon un ordre croissant


L’instruction Sort (x) classe les éléments du vecteur x selon un ordre croissant.

>> x=[-1 0 4 3 9 -5 11 4] ;
>> sort(x)
ans =

-5 -1 0 3 4 4 9 11

1-2-5 Longueur d’un vecteur


Le nombre d’éléments d’un vecteur est donné par la fonction Length.
>> x=[2 0 3 -1 0];
>> length(x)
ans =
5

1-2-6 Génération d’un vecteur


a- à partir d’un pas, en indiquant le premier élément x1 et le dernier élément x2.
>> x = x1 : pas : x2

42
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1er élt pas dernier élt

>> x=[Link]
x=
0 3 6 9 12 15

Si le pas n’est pas indiqué, il est pris égal à 1.

>> x=4:7
x=
4 5 6 7

b- à partir du nombre d’éléments n , en indiquant le premier élément x1 et le


dernier élément x2.

>> x = linspace ( x1 : x2 : n )

1er élt dernier élt nbre d’élts

>> 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

1-2-7 Transposé d’un vecteur


Pour transformer un vecteur ligne x en un vecteur colonne et inversement, il suffit
d’écrire x’.

>> x=[7 -4 3 1 6];


>> x'
ans =
7
-4
3
1
6

43
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1-2-8 Produit scalaire de deux vecteurs


Soient x et y deux vecteurs de même longueur. Leur produit scalaire est un nombre réel
qui s’écrit : p = x1 y1+ … + xn yn. Ce produit s’obtient en multipliant le vecteur x par le
transposé de y.
>> x=[3 0 -1 2];
>> y=[1 -5 4 3];
>> x*y'
ans =
5

1-2-9 Norme d’un vecteur


La norme d’un vecteur x s’écrit : x  x12  ...  xn2 . Le carré de la norme s’obtient en
multipliant le vecteur x par son transposé.

>> x=[1 -2 0 3];


>> sqrt(x*x')
ans =
3.7417

1-2-10 Moyenne des éléments d’un vecteur


x1  ...  xn
La moyenne arithmétique des éléments d’un vecteur x s’écrit : x  . Cela
n
s’obtient par l’instruction mean ( x ).

>> x=[1 -2 0 3];


>> mean(x)
ans =
0.5000

1-2-11 Somme des éléments d’un vecteur


La somme x1  ...  xn  se calcule par l’instruction sum ( x ).

>> x=[5 -2 0 4];


>> sum(x)
ans =
7

1-2-12 Ecart type des éléments d’un vecteur

 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)

‘’s’’ se calcule sous MATLAB par la commande std ( x ).


>> x=[5 -2 0 4];
>> std(x)
ans =
3.3040

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]

x=
4 -3 1
0 5 -2

Le workspace affiche la matrice telle qu’elle a été saisie (figure 3).

Figure 3 Stockage dans le workspace de la matrice x

En double cliquant sur la variable x dans le workspace, un tableau représentant la


matrice x est affiché (figure 4).

Figure 4 Editeur de la matrice x

45
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-1 Quelques matrices connues


2-1-1 La matrice zéro
L’instruction zeros(n,m) crée une matrice n x m d’éléments nuls.
>> zeros(2,3)
ans =
0 0 0
0 0 0

2-1-2 La matrice unité


L’instruction ones(n,m) crée une matrice n x m d’éléments unitaires.

>> ones(3,4)
ans =
1 1 1 1
1 1 1 1
1 1 1 1

2-1-3 La matrice identité


C’est une matrice carrée de dimension n x n dont la diagonale est composée d’éléments
unitaires, les autres éléments sont nuls. L’instruction utilisée est eye(n).

>> eye(4)
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

2-1-4 La matrice aléatoire


L’instruction rand(n,m) crée une matrice de dimension n x m dont les éléments sont
aléatoires de valeur comprise entre 0 et 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

2-2 Opérations élémentaires dans une matrice


2-2-1 Dimension d’une matrice
Afin de connaitre le nombre de lignes (n) et de colonnes (m) qui constituent une matrice,
il suffit d’écrire l’instruction [n,m]=size(x).

46
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> x=[5 -2 8;0 3 7]


x=
5 -2 8
0 3 7
>> [n,m]=size(x)
n=
2
m=
3

2-2-2 Moyenne de chaque colonne


Afin de connaitre la moyenne de chaque colonne, on écrit la commande mean(x).
>> x=[5 -2 8;0 3 7]
x=
5 -2 8
0 3 7
>> mean(x)
ans =
2.5000 0.5000 7.5000

2-2-3 Ecart type de chaque colonne


Afin de connaitre l’écart type de chaque colonne, on écrit la commande std(x).
>> x=[5 -2 8;0 3 7]
x=
5 -2 8
0 3 7
>> std(x)
ans =
3.5355 3.5355 0.7071

2-2-4 Classement des éléments de chaque colonne selon un ordre


croissant
L’instruction Sort (x) classe les éléments de chaque colonne d’une matrice x selon un
ordre croissant.
>> x=[8 2 -5; -1 0 15; 4 6 8]
x=
8 2 -5
-1 0 15
4 6 8
>> sort(x)
ans =
-1 0 -5
4 2 8
8 6 15

47
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-2-5 Valeurs minimale et maximale d’une matrice


Afin de connaitre les valeurs min et max de chaque colonne, on écrit les commandes
min(x) ou max(x).

>> x=[5 -2 8;0 3 7]


x=
5 -2 8
0 3 7
>> min(x)
ans =
0 -2 7
>> max(x)
ans =
5 3 8
Pour connaitre les valeurs min et max de la matrice, on écrit les commandes min(min(x)) ou
max(max(x)).

>> x=[5 -2 8;0 3 7]


x=
5 -2 8
0 3 7
>> min(min(x))
ans =
-2
>> max(max(x))
ans =
8

2-2-6 Somme des éléments d’une matrice


Pour calculer la somme d’éléments de chaque colonne, on écrit la commande sum(x).

>> x=[5 -2 8;0 3 7]


x=
5 -2 8
0 3 7
>> sum(x)
ans =
5 1 15

Pour sommer tous les éléments, on écrit la commande sum(sum(x)).

>> x=[5 -2 8;0 3 7]


x=
5 -2 8
0 3 7
>> sum(sum(x))
ans =
21
48
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-2-7 Extraction d’un élément à partir d’une matrice


L’élément d’une matrice est identifié par les numéros ( i, j ) respectivement de la ligne
et de la colonne auxquelles il appartient. L’instruction utilisée est :
>> x=[6 -1 4 8; 0 7 9 -5;3 0 -1 0 ]
N° de la ligne N° de la colonne
x=
>> x ( i , j ) 6 -1 4 8
0 7 9 -5
3 0 -1 0
>> x(2,3)
ans =
9
>> x(3,4)
ans =
0
2-2-8 Extraction d’une ligne à partir d’une matrice
L’extraction de la ligne ‘’ i ’’ se fait par l’instruction :
N° de la ligne Tous les éléments de la ligne
>> x ( i , : )

Par exemple, l’extraction de la 2e ligne de la matrice x se fait de la manière suivante :


>> 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,:)
ans =
0 7 9 -5

2-2-9 Extraction d’une colonne à partir d’une matrice


L’extraction de la colonne ‘’ j ’’ se fait par l’instruction :
Tous les éléments de la colonne N° de la colonne
>> x ( : , j )

Par exemple, l’extraction de la 4e colonne de la matrice x se fait de la manière suivante :

>> 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(:,4)
ans =
8
-5 49
0
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-2-10 Extraction d’une sous-matrice à partir d’une matrice


Si l’on veut extraire, par exemple, une sous matrice composée de la 2e, 3e , et la 4e
colonne à partir de la matrice x, on écrit l’instruction : >> 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:4)
ans =
-1 4 8
7 9 -5
0 -1 0

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

2-2-11 Réduction d’une matrice


Si on veut effacer une ligne ou une colonne d’une matrice, on remplace cette ligne ou
cette colonne par un vecteur vide [].
Par exemple, si on veut effacer la 3e colonne de la matrice x, on écrit :

50
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> x=[6 -1 4 8; 0 7 9 -5;3 0 -1 0 ]


x=
6 -1 4 8 >> x=[6 -1 4 8; 0 7 9 -5;3 0 -1 0 ]
0 7 9 -5 x=
3 0 -1 0 6 -1 4 8
>> x(:,3)=[] 0 7 9 -5
x= 3 0 -1 0
6 -1 8 >> x(2,:)=[]
0 7 -5 x=
3 0 0 6 -1 4 8
Si on veut effacer, par exemple,
3 0 -1 0
la 2e ligne de la matrice x, on écrit :
Si on veut effacer, par exemple, la 3e et la 4e colonne de la matrice x, 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(:,3:4)=[]
x=
6 -1
0 7
3 0

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-2-13 Répétition d’une matrice


MATLAB peut déterminer une grande matrice en répétant une matrice de base x, n fois
verticalement et p fois horizontalement. La commande est : >> repmat (x,n,p)
>> x=[1 3; 0 -2]
x=
1 3
0 -2
>>
>> repmat(x,2,3)
ans =
1 3 1 3 1 3
0 -2 0 -2 0 -2
1 3 1 3 1 3
0 -2 0 -2 0 -2

2-2-14 Diagonale d’une matrice


Dans MATLAB l’instruction diag est utilisée pour les deux cas :

1- Cas d’un vecteur : Si un vecteur x est composé de n éléments, l’instruction diag va le


transformer en une matrice carrée A de dimension ( n x n ) dont la diagonale est
composée des n éléments du vecteur x. Les autres éléments de la matrice étant nuls.

>> x=[4 6 -3 1 -8]


x=
4 6 -3 1 -8
>>
>> A=diag(x)
A=
4 0 0 0 0
0 6 0 0 0
0 0 -3 0 0
0 0 0 1 0
0 0 0 0 -8

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)

2-2-15 Trace d’une matrice


L’instruction trace(x) calcule la somme algébrique des éléments constituant la diagonale
d’une matrice carrée.
>> x=[-5 3 2;0 8 4;6 -1 7]
x=
-5 3 2
0 8 4
6 -1 7
>>
>> trace(x)
ans =
10

2-2-16 Transposée d’une matrice


La transposée d’une matrice x transforme ses lignes en des colonnes. La transposée est
notée x’.
>> x=[2 0 3 5; -1 4 1 8]
x=
2 0 3 5
-1 4 1 8
>>
>> x'
ans =
2 -1
0 4
3 1
5 8

2-2-17 Déterminant d’une matrice


La commande det (x) calcule le déterminant d’une matrice carrée x.

>> x=[1 3 2;0 2 1;-1 4 0] >> x=[1 3 2;0 2 1;-1 4 0]


x= x=
1 3 2 1 3 2
0 2 1 0 2 1
-1 4 0 -1 4 0
>> >>
>> det(x) >> y=inv(x)
ans = y=
-3 1.3333 -2.6667 0.3333
0.3333 -0.6667 0.3333
2-2-18 L’inverse d’une matrice -0.6667 2.3333 -0.6667
L’inverse d’une matrice carrée A est une matrice >>
-1 >> x^-1
carrée de même dimension notée inv (A) ou A . ans =
1.3333 -2.6667 0.3333
Mathématiquement, on a : A-1 . A = A . A-1 = I
0.3333 -0.6667 0.3333
-0.6667 2.3333 -0.6667
53
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Où I est la matrice identité.

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.

D’après cet exemple, on peut vérifier que : A-1 . A = I

>> y*x
ans =
1.0000 -0.0000 0
0 1.0000 0
0 0.0000 1.0000

2-2-19 Les valeurs propres d’une matrice


Les valeurs propres d’une matrice carrée A sont les racines li de l’équation :
det (A-lI) = 0 .
Ces valeurs propres s’obtiennent par l’instruction : >> eig (A)
>> x=[1 3 2;0 2 1;-1 4 0]
x=
1 3 2
0 2 1
-1 4 0
>> eig(x)
ans =
-0.8794
1.3473
>> x=[5 8; -2 4]
2.5321
x=
5 8
2-3 Opérations élémentaires entre les matrices -2 4
2-3-1 Comparaison entre deux matrices
>> y=[-3 8; 7 5]
La comparaison de deux matrices de même dimension y=
se fait élément par élément et donne une matrice -3 8
booléenne de dimension analogue. Cette matrice est 7 5

composée de 0 si la condition de comparaison est >> x==y


fausse, et de 1 si la condition est vraie. ans =
0 1
0 0
2-3-2 Addition et soustraction de deux matrices
L’addition et la soustraction se fait élément par >> x<y
ans =
élément pour deux matrices de même dimension. 0 0
1 1

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

2-3-3 Opérations élément par élément


La multiplication, la division et autres opérations peuvent se faire élément par élément
entre deux matrices de même dimension.

>> 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

2-3-4 Multiplication de deux matrices


Le produit d’une matrice A(n,p) par une matrice B(p,m) donne une matrice C(n,m).

55
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> A=[5 4 -6;1 -2 3]


A=
5 4 -6
1 -2 3

>> B=[2 0 9 5;-1 -2 7 3;0 8 -5 -2]


B=
2 0 9 5
-1 -2 7 3
0 8 -5 -2

>> 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

2-3-5 Division de deux matrices


Pour la division de la matrice A par la matrice B on utilise le slash ‘’/ ’’ qui signifie la
division à droite. L’opération s’écrit :

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

>> B=[2 0 5;-1 -2 7 ;0 8 -5 ]


B=
2 0 5
-1 -2 7
0 8 -5

>> 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

On remarque bien que C=D, c'est-à-dire ; A / B = A * inv ( B )

L’antislash ‘’\ ’’ signifie la division à gauche. L’opération s’écrit :

>> A\B où bien >> inv(A)*(B)


>> A=[5 -1 0 ; 2 3 4 ;1 -2 -5] >> C=A\B
A= C=
5 -1 0 -0.3878 -0.2245 0.1224
2 3 4 0.0612 -1.1224 -1.3878
1 -2 -5 -0.1020 0.2041 -0.0204

>> B=[-2 0 2;-1 -3 -4;0 1 3] >> D=inv(A)*B


B= D=
-2 0 2 -0.3878 -0.2245 0.1224
-1 -3 -4 0.0612 -1.1224 -1.3878
0 1 3 -0.1020 0.2041 -0.0204

On remarque bien que C=D, c'est-à-dire ; A \ B = inv ( A ) * B


2-3-6 Concaténation de deux matrices
Soient A et B deux matrices ayant le même nombre de lignes. La concaténation de A et B
se fait de la manière suivante : >> [A B]

57
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Si A et B ont le même nombre de colonnes, leur concaténation se fait de la manière


suivante : >> [A ; B]
>> A=[4 -3 2;7 0 -1]
A=
4 -3 2
7 0 -1

>> B=[2 5;-6 8]


B=
2 5
-6 8

>> 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

2-3-7 Résolution d’un système d’équations linéaires


Soit à résoudre le système d’équations linéaires :
 x1  2 x2  3x3  15

 x1  2 x2  x3  13
 2 x  5 x  2 x  19
 1 2 3

Ce système peut être écrit sous forme matricielle : A X   B


Où :
1 2 3  x1  15
A   1 2 1  ; X    x2  ; B  13
 2 5  2 x  19
 3  
Pré-multiplions les termes de cette équation par la matrice A 1 , soit :
A1  A X   A1  B  I  X   A1  B  X   A  B
1

La solution est obtenue par l’instruction :

>> X = A \ B ou bien >> X = inv (A) * (B)

58
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

>> A=[1 2 3;1 2 1;-2 5 -2]


A=
1 2 3
1 2 1
-2 5 -2

>> B=[15 13 19]'


B=
15
13
19

>> 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)

SECTION V: Chaînes de Caractères

1- Déclaration de Chaines de Caractères


2- Opérations sur les Chaines de Caractères
3- Affichage des Chaines de Caractères
4- Entrée des Données
5- Dates et Heures

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.

1- DECLARATION DE CHAINES DE CARACTERES


1-1 Déclaration d’une chaîne de caractères
On défini une chaîne de caractères entre apostrophes.
>> A='une dalle'
A=
une dalle

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)

La chaîne de caractères A est considérée un vecteur ligne contenant 9 éléments. On peut


aussi dire que A est une matrice à 1 ligne et 9 colonnes.
La longueur de la chaîne A se calcule par une deuxième méthode en utilisant l’instruction
length ( A ).
>> length(A)
ans =
9

1-3 Déclaration de plusieurs chaînes de caractères


Pour déclarer plusieurs chaines de caractères dans une même ligne, on écrit l’instruction
*‘chaine1’,‘chaine2’,….+
>> A='Le béton est constitué de ';
>> B='granulats, ciment et ';
>> C='eau.';
>> D=[A,B,C]
D=
Le béton est constitué de granulats, ciment et eau.
>> size(D)
ans =
1 51

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.

>> A=['Béton';'DDS ';'MDS ']


A=
Béton
DDS
MDS
>> size(A)
ans =
3 5

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)

Par exemple, pour afficher la deuxième ligne, on écrit

>> A(2,:)
ans =
DDS

2- OPERATIONS SUR LES CHAINES DE CARACTERES


2-1 Transformations alphanumériques
Chaque caractère est représenté par un numéro dans le code ASCII. Par exemple la lettre
‘a’ est représentée par le nombre 97, ‘b’ par 98, ‘e’ par 101, ‘r’ par 114, etc.
Pour transformer une chaîne alphabétique en une chaîne numérique, on utilise
l’instruction abs( A ).
>> A='le poteau'
A=
le poteau
>> abs(A)
ans =
108 101 32 112 111 116 101 97 117

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 transformer une chaîne numérique A en une chaîne alphabétique, on utilise


l’instruction setstr( A ).
>> B=[112 111 117 116 114 101];
>> setstr(B)
ans =
poutre

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)

2-2 Transposée d’une chaîne de caractères


Il suffit d’écrire A’ et on obtiendra l’écriture verticale de A.
>> A='Pont';
>> A'
ans = >> A=[77;117;114]
P A=
o 77
n 117
t 114
>> setstr(A)
De même, l’instruction setstr sur un vecteur ans =
colonne de codes ASCII, donne une M
écriture verticale de la chaîne de caractères u
r
correspondante.

2-3 Conversion de nombres vers des chaînes de caractères et


inversement
Pour convertir un nombre x en une chaîne de caractères, on applique la commande
num2str (x,N). Où N est le nombre de chiffres à afficher.
>> x=12.354;
>> num2str(x,1)
ans =
1e+001
>> num2str(x,2)
ans =
12
>> num2str(x,3)
ans =
12.4
>> num2str(x,4)
ans =
12.35
>> num2str(x,5)
ans = >> A='325'
12.354 A=
325
Remarque : Le point décimal n’est pas considéré >> isstr(A)
ans =
un chiffre. 1
>> x=str2num(A)
x=
Pour convertir une chaîne de caractères A en un nombre,
325
on applique la commande str2num (A). >> isstr(x)
ans =
0

63
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2-4 Recherche d’une chaîne de caractères


Lorsqu’on cherche une chaîne de caractères b se trouvant dans une chaîne plus grande A
par exemple, on applique la commande findstr (A,b). On aura comme résultat le
numéro qui marque le début de la chaîne de caractères b.
>> A='Le plancher est supporté par les poteaux';
>> findstr(A,'est')
ans =
13
>> findstr(A,'po')
ans =
20 34
>> findstr(A,'mais')
ans =
[]

2-5 Comparaison de deux chaînes de caractères


Soient A et B deux chaînes de caractères. Leur comparaison utilise l’instruction
strcmp(A, B) qui donne comme résultat soit 1 si A=B soit 0 si A≠B.
Prenons l’exemple des deux chaînes : A =’Mortier’, B=’ Mortier ‘. B contient un blanc au
début de la chaîne et deux blancs à la fin. La comparaison donnera zéro comme résultat.
>> A='Mortier';
>> B=' Mortier ';
>> strcmp(A, B)
ans =
0

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

3- AFFICHAGE DES CHAINES DE CARACTERES


3-1 Affichage d’une valeur numérique
Cette valeur numérique x est transformée en texte et elle est souvent accompagnée
d’un texte d’annotation. L’instruction utilisée est disp( texte,’x’,texte ).
Dans l’exemple qui suit, on affiche la valeur d’un moment fléchissant en (KN.m) avec 5
chiffres significatifs.
>> Mt=125.348;
>> disp(['Moment fléchissant = ' num2str(Mt,5) ' KN.m'])
Moment fléchissant = 125.35 KN.m
64
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

3-2 Affichage d’un vecteur ou une matrice


Le vecteur est affiché d’une manière similaire qu’un scalaire.
>> Mt=[24.884 127.902 43.5219];
>> disp(['Moment fléchissant = ' num2str(Mt,4) ' KN.m'])
Moment fléchissant = 24.88 127.9 43.52 KN.m

Pour afficher l’annotation de chaque valeur, on utilise l’instruction repmat, comme suit

>> disp([repmat('Moment fléchissant = ',3,1) num2str(Mt',4) repmat(' KN.m',3,1)])


Moment fléchissant = 24.88 KN.m
Moment fléchissant = 127.9 KN.m
Moment fléchissant = 43.52 KN.m

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.

>> A=[15 -18 1247.528 0.1125];


>> fprintf(1,' %5.2f ',A)
>> 15.00 -18.00 1247.53 0.11

Remarque : Si on veut afficher dans l’écran, on utilise la syntaxe


sprintf ( ’%[Link]’ , valeurs)
Où s signifie écran (screen). On remarque qu’on a éliminé la commande 1 de l’écran.

>> A=[15 -18 1247.528 0.1125];


>> sprintf(' %5.2f ',A)
ans =
15.00 -18.00 1247.53 0.11

Pour afficher les valeurs sous forme d’une colonne, on ajoute \n à la partie format.

>> A=[15 -18 1247.528 0.1125];


>> fprintf(1,'%5.2f\n',A)
15.00
-18.00
1247.53
0.11

65
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

On peut affecter à chaque valeur son format spécifié. Par exemple


>> A=[15 -18 1247.528 0.1125];
>> fprintf(1, '%2.0f %2.0f %5.3f %5.5f', A)
15 -18 1247.528 0.11250

Pour annoter chaque valeur, on procède comme suit


>> A=[15 -18 1247.528 0.1125];
>> fprintf(1,'masse=%2.0f kg pression=%2.0f KPa temps=%5.3f s longueur=%5.4f m', A)
masse=15 kg pression=-18 KPa temps=1247.528 s longueur=0.1125 m

Pour afficher dans une colonne, on écrit


>> A=[15 -18 1247.528 0.1125];
>> fprintf(1,'masse=%2.0f kg\npression=%2.0f KPa\ntemps=%5.3f s\nlongueur=%5.4f m', A)
masse=15 kg
pression=-18 KPa
temps=1247.528 s
longueur=0.1125 m

Pour réaliser l’affichage d’une matrice, on procède comme suit


>> z=10*rand(3)
z=
8.1472 9.1338 2.7850
9.0579 6.3236 5.4688
1.2699 0.9754 9.5751
>>
>> fprintf(1,'%6.2f %6.2f %6.2f\n', z');
8.15 9.13 2.78
9.06 6.32 5.47
1.27 0.98 9.58

4- ENTREE DES DONNEES


4-1 Entrée des données d’un scalaire
L’introduction d’un scalaire se fait selon l’exemple suivant :
>> T=input('Entrer la valeur de la température en C°= ');
Entrer la valeur de la température en C°= 20
>> disp(T)
20

4-2 Entrée d’une chaine de caractères


L’introduction d’une chaine de caractère se fait selon l’exemple suivant :
>> Nom=input('Entrer le nom du projet:','s');
Entrer le nom du projet:120 logts
>> disp(Nom)
120 logts
66
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

4-3 Entrée d’un vecteur


L’introduction d’un vecteur se fait selon l’exemple suivant :
>> F=input('Entrer les forces en KN= ');
Entrer les forces en KN= [150 235 98 123]
>> disp(F)
150 235 98 123

4-4 Entrée d’une matrice


L’introduction d’une matrice se fait selon l’exemple suivant :
>> A=input('Entrer une matrice(2x3) =');
Entrer une matrice(2x3) =[5 -2 3;0 4 11]
>> disp(A)
5 -2 3
0 4 11

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

5-2 Affichage de l’heure


En tapant clock, on obtient [Année Mois Jour Heure Minute Seconde].

>> clock
ans =
1.0e+003 *
2.0150 0.0010 0.0120 0.0050 0.0550 0.0496

Pour avoir un affichage sous forme d’entiers, on utilise la commande fix(clock).

>> fix(clock)
ans =
2015 1 12 5 59 31

5-3 Estimation du temps écoulé


Méthode 1 : On peut calculer le temps CPU (du processeur) écoulé dans une opération
qui a commencé en t0 et s’est terminée en tf. Cette durée est Dt = tf - t0. Cela est utile
pour contrôler le temps d’exécution d’une application quelconque.
Calculons par exemple le temps d’exécution pour inverser une matrice (500 x 500)

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

delta_t = Command Window


0.4056

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.

tic; % on lance le timer


M=rand(500);
inv(M); Editeur
toc; % on comptabilise le temps CPU écoulé depuis "tic"

Elapsed time is 0.153161 seconds. Command Window

68
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION VI: Programmation en Matlab


1- Ouverture d’un fichier script (M-File)
2- Notre premier programme
3- Operateurs de comparaison et operateurs logiques
4- Instructions conditionnelles
5- Boucles
6- Débogage

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.

1- OUVERTURE D’UN FICHIER SCRIPT (M-FILE)


Le langage MATLAB permet d’écrire des programmes dans une feuille M-File contenue
dans la fenêtre editor.
Pour activer la fenêtre editor, on utilise à partir du menu (figure 1):
Desktop
Editor
La fenêtre vide Editor apparaitra comme indiqué dans la figure 2. Pour ouvrir une
nouvelle feuille M-file, on applique à partir du menu (figure 3) :

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).

Figure 1 Ouverture de la fenêtre Editor

Figure 2 Fenêtre vide Editor activée

70
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 3 Ouverture d’un nouveau fichier script (M-File)

2- NOTRE PREMIER PROGRAMME


N’importe quel programme est constitué des trois parties suivantes :
1- L’introduction des données, par exemple ; à l’aide de l’instruction input.
2- Le traitement qui représente l’exécution des commandes contenues dans le
programme.
3- L’affichage des résultats, à l’aide de l’instruction disp par exemple.

Données
…..
Traitement
…..
Résultats
…..

Exemple 1 : Ecrire un programme qui calcule le volume ‘’v’’ d’un


cylindre (figure 4) de rayon ‘’r ‘’ à la base et de hauteur ‘’h’’.
Figure 4 Cylindre
71
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

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).

Figure 5 Contenu du programme cylindre.m

Figure 6 Affichage des résultats dans Command Window

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) ;

L’instruction ci-dessus peut s’écrire sous la forme :

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)

3- OPERATEURS DE COMPARAISON ET OPERATEURS LOGIQUES


L’opérateur de comparaison compare deux nombres en indiquant si cette relation est
vraie (1) ou fausse (0).
Opérateur de comparaison
>> 5>3
ans =
1 Résultat vrai
(1)
L’opérateur logique relie entre deux ou plusieurs états de comparaison. Dans l’exemple
qui suit, on choisit les valeurs a=12 et b=8, et on vérifie si les comparaisons (a>7 et b>7)
et (a>10 et b>10) sont vraies ou fausses.

Opérateur logique et (&)


>> a=12; relation
>> b=8;

>> a>7&b>7
ans =
1 Résultat vrai (1)

>> a>10&b>10
ans =
0 Résultat faux (0)

3-1 Operateurs de Comparaison


Ces opérateurs sont représentés dans le tableau 1.

Tableau 1 Opérateurs de comparaison

3-2 Operateurs logiques


Le tableau 2 présente les quatre opérateurs logiques (and, or, xor, not), alors que le
tableau 3 présente les différents résultats sur deux conditions A et B.

73
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Opérateur logique Nom Description


& (and) Si les conditions A et B sont vraies
Exemple : A&B ‘‘et’’ toutes les deux, alors le résultat final
and(A,B) est vrai, sinon faux pour les autres cas.
| (or) Pour que le résultat final soit vrai, on
Exemple : A|B ‘’ou’’ logique doit avoir soit A vrai, soit B vrai, soit A
or(A,B) et B vrais.
(xor) Pour que le résultat final soit vrai, on
‘’ou’’ exclusif
Exemple : xor(A,B) doit avoir soit A vrai, soit B vrai, mais
(ou bien)
pas les deux (ou exclusif).
~ (not) Si A est vrai, non (A) est faux, et
Exemple : ~A ‘’non’’ logique inversement.
not(A)
Tableau 2 Opérateurs logiques

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

Exemple 3 : Résultats de quelques opérations logiques sur deux variables x et y.

>> x=-2;y=5; >> ~(y<7) >> (x<-1)&(x>8)


ans = ans =
>> x<-5 0 0
ans =
0 >> (x<-1)|(x>8) >> xor(x<-1, x>8)
ans = ans =
>> x>=-2 1 1
ans =
1 >> x<-1 | x>8 >> xor(x<-1, y>3)
ans = ans =
>> -5<x & x<-1 1 0
ans =
1 and(x>=0,y<10) >> or(x<-1, y>3)
ans = ans =
0 1

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.

Figure 7 Organigramme de ’’ if - end ’’ Figure 8 Algorithme de ’’ if - end ’’

Exemple 4 : Dans le calcul à la stabilité au renversement d’un ouvrage en génie civil, on


doit vérifier que le rapport F entre le moment stabilisant Ms et le moment renversant Mr
dépasse 1.5, soit :
M
F  s  1.5
Mr
On se propose d’écrire un programme (avec un organigramme et un algorithme) qui
calcule et affiche le coefficient de sécurité F. Si ce dernier est strictement inférieur à 1.5,
le programme affichera le message : ‘‘ Risque de renversement !! ’’.

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

3)- Programme : ‘’ Renversement.m ’’

76
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

4)- Résultats : cas où Ms/Mr >= 1.5

5)- Résultats : cas où Ms/Mr < 1.5

4-1-2 L’instruction ‘’ if – else – end ‘’


Cette instruction conditionnelle présente deux groupes de commandes comme
schématisé dans les figures 9 et 10.

Figure 9 Organigramme de ’’ if - else - end ’’ Figure 10 Algorithme de ’’ if - else - end ’’

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)

3)- Programme : ‘’ Renversement_v2.m ’’

4)- Résultats : cas où Ms/Mr >= 1.5

5)- Résultats : cas où Ms/Mr < 1.5

4-1-3 L’instruction ‘’ if – elseif – else – end ‘’


Cette instruction conditionnelle présente plus de deux groupes de commandes (3, 4, …, n
groupes). La procédure est schématisée dans les figures 11 et 12.

79
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 11 Organigramme de ’’ if – elseif – else - end ’’


pour 3 groupes de commandes

Figure 12 Algorithme de ’’ if – elseif – else - end ’’


pour n groupes de commandes

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.

Figure 13 Schéma statique 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)

3)- Programme : ‘’ Effort_tranchant.m ’’

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)

4-2 INSTRUCTIONS CONDITIONNELLES ‘’ switch-case ’’


Quand le nombre de cas possibles est important, il est
préférable d’utiliser à la place de if l’instruction switch
comme illustré dans l’algorithme de la figure 14.

Exemple 6 : On se propose de calculer le moment fléchissant


dans une section selon les combinaisons à l’ELS :
1- combinaisons rares : G+Q+0.6T,
2- combinaisons fréquentes : G+0.65Q,
3- combinaisons quasi-permanentes : G.
MG = 250 KN.m, MQ = 120 KN.m, MT = 70 KN.m

Figure 14 Schéma Algorithme


de l’instruction switch-case
Solution :

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.

5-1 Boucle ‘’ for - end ’’


Dans la boucle ‘’ for – end ‘’, le nombre de répétition est déjà connu au préalable.
L’algorithme de la figure 15 illustre la forme générale de la boucle ‘’ for –end ‘’.
valeur
initiale pas valeur
indice finale

ensemble de
commandes

Figure 15 Structure de la boucle ‘’for – end’’

Exemple 7 : Soit une poutre de longueur L subdivisée en N éléments. Ecrire un


programme qui calcule l’abscisse x de chaque nœud.

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.

5-2 Boucle ‘’ while - end ’’


Ce type de boucle est utilisé quand le nombre de répétitions est inconnu au préalable.
On posera une condition, et la boucle continue à s’exécuter tant que cette condition est
vérifiée, sinon le programme sautera la commande ‘’ end ‘’ de la boucle et continuera à
exécuter le reste des instructions se trouvant après ‘’ end ‘’. La figure 16 illustre la
structure générale de la boucle ‘’ while – end ‘’.

Figure 16 Structure de la boucle ‘’while – end’’

Exemple 8 : Ce programme prend comme valeur initiale x = 1, ensuite il va la doubler


tant que x <= 15.

Exemple 9 : Ecrire un programme qui calcule la valeur y  e x , en utilisant la série de


x 2 x3
Taylor : y  e x  1  x    ...
2! 3!
 xi 
Le programme doit s’arrêter si la valeur du terme ajouté   est inférieure à 0,001.
 i! 
86
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Solution :

5-3 Boucles imbriquées


On peut utiliser plusieurs boucles ; l’une à l’intérieur de l’autre comme illustré dans la
figure 17.

Boucle principale

Boucle imbriquée

Figure 17 Structure de boucles imbriquées

87
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Exemple 10 : Ecrire un programme qui calcule le triangle de Pascal.


Solution :

5-4 L’instruction ‘’break’’


Quand le programme rencontre l’instruction ‘’ break ’’ à l’intérieur d’une boucle ‘’ for-
end ’’ ou ‘’ while-end ’’, il sort de la boucle et termine les autres instructions du
programmes se trouvant après le ‘’ end ’’ de la boucle.

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)

Remarque 1 : En cas de boucles imbriquées, le programme sort seulement de la boucle


contenant l’instruction ‘’ break ’’ mais ne sort pas des autres boucles.

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 :

5-5 L’instruction ‘’continue’’


Quand le programme rencontre l’instruction ‘’ continue ’’ à l’intérieur d’une boucle ‘’ for-
end ’’ ou ‘’ while-end ’’, il saute à la valeur suivante de la boucle sans sortir de cette
dernière.

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’’.

6-1 Point d’arrêt


En mode ‘’debug’’, on ajoute des points d’arrêt (breakpoint) au programme. Pendant
son exécution, le programme s’arrête sur la ligne contenant le point d’arrêt. Pendant
cette “pause”, on peut exécuter des commandes à partir de ‘’Command window’’, on
peut afficher les valeurs des variables et même les modifier. Le point d’arrêt est obtenu
par l’une des trois méthodes :
1)- En cliquant sur la ligne du programme (figure 18).

Figure 18 Point d’arrêt d’un programme

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.

Figure 19 Boutons pour l’ajout et la suppression d’un point d’arrêt

3)- En utilisant dans le menu : Debug ↘, Set/Clear Breakpoint ↘ (figure 20).

91
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 20 Ajout et suppression d’un point d’arrêt à partir du menu

6-2 Poursuite du débogage


On pourra continuer, à travers le menu ‘’debug’’ qui offre les 4 possibilités (figures 20 et
21) :
 Step: Effectue les lignes les unes après les autres.
 Step In: Comme Step mais débugge également les fonctions utilisées.
 Step Out: Permet de sortir d'une sous-fonction tout en continuant à débugger.
 Continue: Continue le code sans débogage jusqu'à la fin ou jusqu'au prochain point
d'arrêt.

Figure 21 Outils de débogage

92
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Exemple 14 : L’exécution du programme ‘’TaylorExpo.m’’ (figure 22), pour x = 0.2,


donne les résultats montrés dans la figure 23, et ce après 4 itérations. Vérifier le
programme.

Figure 22 Ajout du point d’arrêt à la 5e ligne du programme ‘’TaylorExpo.m’’

Figure 23 Résultats pour x=0.2, après 4 itérations’


Solution :
Etapes du débogage :
1)- Ajouter le point d’arrêt à la 5e ligne du programme (figure 22) et lancer le
programme. On aura le résultat de la figure 24.
2)- En cliquant sur ‘’ Step ’’ à partir du menu (figure 25), un pointeur vert apparait (figure
26). En cliquant sur le bouton ‘’ Continue ‘’ (figure 21), on peut visualiser les étapes
suivies par le programme (figure 26).
3)- A partir de ‘’ Command window ‘’, pour chaque arrêt, on peut vérifier les valeurs de
l’indice ’’ i ‘’ et de ‘’ ajout ‘’ et vérifier si ce dernier est inférieur à 0.001 (figure 27). Pour
avancer, on utilise le bouton ‘’ Continue ‘’ (figure 21).

Figure 24 Arrêt du programme à la ligne 5


93
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 25 Activation de ‘’Step’’

(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)

Figure 27 Vérification des valeurs i et ajout à partir de ‘’Command window ’’

95
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION VII: Les fonctions de MATLAB

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.

Figure 1 Définition d’une fonction

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.

Exemple 1 : La figure 2 présente le fichier de fonction spher.m qui contient la fonction


‘’ spher ‘’ utilisant comme données le rayon ‘’r ‘’ de la sphère et la masse volumique ‘’ρ’’
du matériau constituant cette sphère. Cette fonction renvoie comme résultats l’aire ‘’ S’’
de la sphère, son volume ‘’V’’ et sa masse ‘’M’’.

Le fichier ‘’spher.m’’ contenant la fonction spher

Figure 2 Structure de la fonction ‘’ spher.m ’’

Remarque : Lors de la sauvegarde d’un fichier de fonction, il portera par défaut le


même nom de la fonction suivi de l’extension ( .m ).

1-2 Le ‘’HELP’’ d’une fonction


Dans la fenêtre ‘’ Command Window ’’, lorsqu’on tape l’instruction : help spher, les
lignes de commentaire de cette fonction (lignes qui commencent par le symbole %) vont
s’afficher afin de présenter cette fonction (figure 3).

97
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 3 Le help de la fonction ‘’ spher.m ’’est constitué des premières lignes de


commentaire de cette fonction

1-3 L’Appel d’une fonction


Dans l’exemple 2, on expliquera comment un programme principal fait appel à une
fonction.

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).

Le M-file ‘’bille.m’’ contenant le programme principal

Figure 4 Le programme principal ‘’ bille.m ’’

Figure 5 Affichage des résultatsde ‘’bille.m‘’


dans‘’ Command Window ’’

98
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1-4 Notion de variables locales et globales


Toutes les variables d’un fichier ‘’fonction’’ (de donnée ou de résultat) sont locales. Cela
veut dire que ces variables sont définies et reconnues seulement à l’intérieur du fichier
‘’fonction’’. Quand ce dernier est exécuté, MATLAB utilise un espace de mémoire qui est
séparé du workspace (l’espace mémoire de ‘’Command window’’ et du ‘’M-file’’).
D’après les exemples 1 et 2, les variables R, rho, aire, volume, masse sont reconnues par
‘’Command window’’ (figure 6)., alors que les variables r, rau, S, V, M ne le sont pas
(figure 7).

Figure 6 Variables du (M-file) reconnues par ‘’ Command Window ’’

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 :

Exemple 3 : En transformant rau et S en des variables globales, ces dernières seront


reconnues par ‘’Command Window ’’ (figure 8).

99
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 8 Variables globales rau et S reconnues par ‘’Command Window ’’

1-5 Comparaison entre les fichiers de fonctions et les ‘’M-file’’


 Les deux fichiers ont l’extension ( .m ).
 La première ligne du fichier de fonction commence par la définition de la fonction.
 Les variables dans le fichier de fonction sont locales et n’apparaitront pas dans le
workspace, alors que les variables du M-file sont globales reconnues par
‘’Command Window’’ et enregistrées dans le workspace. La fonction ne pourra
donc utiliser que les variables locales d’entrée et de sortie, alors que le M-file
peut utiliser toutes les variables du workspace.

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 :

nom_fonction = @ ( x, y,… ) (‘ expression mathématique ’) ;

arguments ou variables de donnée

Exemple 5 : Utiliser la fonction anonyme pour calculer l’expression : f x, y   3 x 2  2 x y  5

Exemple 6 : Utiliser la fonction anonyme pour calculer l’expression :


v1  3 x 2  2 x y
v2  x 2  y 2  x y

Remarque : une fonction anonyme peut appeler une autre


Exemple 7 : la fonction ‘’ v ‘’ peut appeler la fonction ’’ w ‘’ :
v1  3 x 2  2 x y  w  5
v2  x 2  y 2  x y

101
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

3-2 Fonctions ‘ inline ‘


Similairement aux fonctions prédéfinies et les fonctions anonymes, la fonction ‘ inline ‘
na pas besoin d’un fichier de fonction pour la définir. On utilise la syntaxe :

ex
Exemple 8 : Fonction à une seule variable : f x  
x2  5

On pourra évaluer la fonction pour n’importe quelle valeur de x,

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)

Exemple 9 : Fonction à plusieurs variables : f x, y   x2  3 x y  2 y 2

L’évaluation de la fonction dans certains points donne

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)

Figure 9 Affichage des fonctions anonymes et inline dans le ‘’Workspace ’’

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.

Exemple 10 : feval pour une fonction prédéfinie

Exemple 11 : feval pour une fonction anonyme : w  3 x2  2 x y  5

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

Exemple 13 : feval pour une fonction inline à plusieurs variables :


f x, y   x 2  3 x y  2 y 2

Exemple 14 : feval pour un fichier de fonction ‘’spher.m’’. Pour un rayon r = 1.2 cm de


la sphère pleine et une masse volumique ρ = 0.8 gr/m3, la fonction ‘’spher.m’’ renvoie
une aire S = 18.0956 cm2, un volume V = 7.2382 cm3 et une masse M = 5.7906 gr.

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)

Exemple 15 : Traçage de la fonction f3 t    6  2 t  sin t 2  dans l’intervalle t : [0 5].


Le graphe est représenté dans la figure 10.

Figure 10 Graphe de f3 t    6  2 t  sin t 2  dans l’intervalle t : [0 5]

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 :

Exemple 16 : Revenons à l’exemple 11 de la fonction f3 t    6  2 t  sin t 2 . D’après la


figure 10, on déduit que les 3 zéros de la fonction f3(t) sont aux environs de 2.7, 3.1 et
3.4. Pour calculer ces trois zéros, on procède de la manière suivante :

106
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

107
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION VIII: Les Fichiers dans MATLAB

1- Importation des données a partir d’un fichier

2- Exportation des données vers un fichier Excel


3- Manipulation des fichiers

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.

1- IMPORTATION DES DONNEES A PARTIR D’UN FICHIER


L’importation se fait à partir d’un fichier de texte ou d’un fichier Excel. Prenons l’exemple
de fichiers (donné[Link]) et (donné[Link] ou bien donné[Link]) qui contiennent les
valeurs des efforts normaux et des moments fléchissants de 6 poteaux (figure 1).

a- donné[Link] b- donné[Link]
Figure 1 Fichiers de données

1-1 Importation en utilisant ‘’Copier-Coller’’


Afin de réaliser cette opération, Il suffit de suivre les étapes suivantes :
1- Sélectionner et copier les valeurs numériques (sans le texte) à partir des fichiers de
données,
2- aller vers MATLAB et écrire dans ‘’ Command Window ’’ un nom de variable (A par
exemple) suivi de (=[ ]), soit : A = [ ] ;

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 2 Importation des données sous forme de matrice

1-2 Importation en utilisant le menu de MATLAB


Cette deuxième méthode de ‘’Copier-Coller’’ se fait selon les étapes :
1- Taper dans le menu : File > Import Data (figure 3), et choisir le fichier ‘’ donné[Link] ’’
contenu dans MATLAB (figure 4), et cliquer sur <ouvrir>.

Figure 3 Utilisation du
menu ‘’Import Data’’

Figure 4 Choix du fichier


‘’donné[Link]’’

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>.

Figure 5 Affichage du contenu du fichier de données dans ‘’Import Wizard’’

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>.

Figure 6 Choix du type (matrice) de la variable des données

110
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Figure 7 Choix du nom (A) de la variable des données

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).

Figure 8 Apparition de la variable de données ‘’A’’ dans le ‘’workspace’’

Figure 9 Contenu de la variable ‘’A’’


111
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

1-3 Importation en utilisant les commandes


Afin d’importer des valeurs numériques à partir d’un fichier de texte il faut que ce
dernier ne contienne aucune ligne de caractère. Pour cette raison, on doit effacer la
première ligne du fichier ‘’donné[Link]’’, cette ligne contient des chaines de caractères.
Le nouveau fichier sera enregistré sous le nom : ‘’ donné[Link] ’’ (figure 10). La
commande utilisée est :

nom_variable = load (‘ nom_fichier.txt ’) ;

Figure 10 Importation du fichier ‘’ donné[Link] ’’

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

nom_variable = xlsread (‘ nom_fichier.xls, num_f, champ_données ’) ;

Figure 11 Importation des données à partir du fichier ‘’ donné[Link] ’’

112
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

2- EXPORTATION DES DONNEES VERS UN FICHIER EXCEL


Pour exporter des données vers un fichier Excel, on utilise la commande xlswrite,

xlswrite ( ‘ nom_fichier.xls ’, nom_variable ) ;

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

On peut spécifier la feuille et l’emplacement des données exportée, on utilisera la


syntaxe suivante :

xlswrite ( ‘ nom_fichier.xls ’, nom_variable, ’ nom_feuille ‘, ‘ cellule d’emplacement ’ ) ;

Exemple 2 : Exportation d’une matrice aléatoire C (3 x 6) vers le fichier ‘ [Link] ’


dans ‘ ma_feuille ’ et à l’emplacement ‘ B3 ‘ (figure 13).

113
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

‘’ nouvelle feuille ‘’ ‘’ [Link] ‘’


Figure 13 Exportation de données vers un fichier Excel avec le nom
de la feuille et la cellule d’emplacement des données.

3- MANIPULATION DES FICHIERS


Pour ouvrir un fichier, on utilise la syntaxe :

fid = fopen ( ‘ nom_fichier ’, ‘ permission ‘ ) ;

fid est l’identificateur du fichier,


permission : ‘ r ‘ ouverture en lecture,
‘ w ‘ ouverture en écriture,
‘ at ‘ ouverture en lecture et écriture avec ajout aux données précédentes.

Exemple 3 : Impression d’une matrice aléatoire A (2 x 3) dans le fichier ‘ ré[Link] ’

a- Code ‘‘ es_fich.m ’’

114
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

b- La matrice aléatoire A (2 x 3) à partir de ‘Command window’

c- La matrice aléatoire A (2 x 3) à partir du fichier ‘’ ré[Link] ’’


Figure 14 Ecriture d’une matrice dans un fichier
Remarques :
 MATLAB lit une matrice (A) colonne par colonne. Pour réécrire cette matrice dans
un fichier, on doit utiliser la transposée (A’).
 Dans le format ‘’ %+5.3f ‘’ :
% est le début du format,
+ définit le signe (+/-) de la valeur,
5 est le nombre maximal de chiffres significatifs avant et après la virgule,
3 est le nombre maximal de chiffres significatifs après la virgule,
f : le séparateur est un point fixe,
\n : saut de ligne.
Exemple 4 : Ajout d’une matrice aléatoire A (3 x 5) dans le fichier ‘ ré[Link] ’.

a- Code ‘‘ es_fich.m ’’

b- La matrice aléatoire A (2 x 3) à partir de ‘Command window’


115
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

c- La matrice ( 3 x 5 ) ajoutée à la matrice (2 x 3) dans le fichier ‘’ ré[Link] ’’


Figure 15 Ajout de données dans un fichier

116
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

SECTION Annexe: Interfaces graphiques en MATLAB

1- Les différents interfaces graphiques

2- Exemple d’application

Une interface graphique permet de contrôler une application interactivement avec la


souris, plutôt que par lancement des commandes au clavier. MATLAB possède la fonction
GUI (Graphical User Interface) pour développer des interfaces graphiques utiles dans la
programmation.

1- LES DIFFERENTS INTERFACES GRAPHIQUES


Une interface graphique comprend des menus, des boutons, des "ascenseurs", des cases
à cocher, des listes de choix, des zones de texte.

a- Bouton b- Menu

c- Ascenseur (ou slider)

117
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

d- Editeur de texte

e- Liste de choix

f- Bouton Radio

Figure 1 Exemple d'interfaces

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).

Figure 2 Interface de calcul des efforts T et M d’une poutre

Etape 1 : File > GUI > Blank GUI (Default)

La fenêtre suivante apparait :

119
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Etape 2 : Choisir edit Text à partir de la liste des objets

On peut copier le premier edit Text pour en avoir 5.

120
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

De la même manière, on place deux boutons.

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.

Etape 4 : Aller à fonction bout_calcul et ajouter le code :

122
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

Aller à fonction bout_efface et ajouter le code :

En sauvegardant et en exécutant TM.m, on aura :

En cliquant sur le bouton : ’’Nouveau Calcul’’, on aura :

123
Programmer avec Matlab Cours Préparé par: Nadji CHIOUKH (PhD)

124

Vous aimerez peut-être aussi