Vous êtes sur la page 1sur 39

Institut National des Sciences Appliquées et de Technologie INSAT

Introduction à Matlab

GL3
TABLE DES MATIÈRES ii
Table des matières

1 Environnement Matlab iv

2 Commandes d’environnement vii

3 Éléments d’aide de Matlab viii

4 Opérations arithmétiques simples, scalaires et chaı̂nes de ca-


ractères ix

5 Construction et opérations sur les vecteurs x

6 Polynômes xii

7 Construction et opérations sur les matrices xii

8 Structures conditionnelles et itératives xv

8.1 Opérateurs booléens . . . . . . . . . . . . . . . . . . . . . . . . xv

8.2 Structure conditionnelle ‘if’ . . . . . . . . . . . . . . . . . . . . xv

8.3 Branchement ‘switch’ . . . . . . . . . . . . . . . . . . . . . . . . xvi

8.4 Boucle ‘for’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii

8.5 Boucle ‘while’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii

9 Programmation et utilisation de fonctions xviii

Enseignant: CHEMKHI Majed GL3


TABLE DES MATIÈRES iii

9.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii

9.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix

10 Opérations d’entrée/sortie xxi

10.1 Entrée/Sortie de données texte . . . . . . . . . . . . . . . . . . xxi

10.1.1 Affichage dans la sortie standard de Matlab . . . . . . . xxi

10.1.2 Lecture/écriture dans un fichier . . . . . . . . . . . . . . xxii

10.2 Entée/Sortie des données formatées . . . . . . . . . . . . . . . . xxiii

10.3 Formats d’affichage . . . . . . . . . . . . . . . . . . . . . . . . . xxv

11 Utilisation des graphiques xxv

11.1 Graphes en 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi

11.2 Graphes en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

11.2.1 Courbes paramétrées . . . . . . . . . . . . . . . . . . . . xxvii

11.2.2 Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . xxvii

12 Liste des commandes utiles xxviii

Enseignant: CHEMKHI Majed GL3


iv

1 Environnement Matlab

Matlab (MATrix LABoratory) est un environnement de calcul numérique ma-


triciel, utilisée dans de nombreux domaines d’application. Matlab est à la fois
un langage de programmation et une plateforme de développement destinée au
calcul scientifique. MATLAB a été développé et commercialisé par la société
américaine MathWorks 1 qui le définit 2 comme étant un langage de haut niveau
et un environnement intéractif permettant de réaliser des tâches coûteuses avec
une vitesse plus rapide que les langages de programmation ”traditionnels” tels
que les langages C, C++ ou encore Fortran.

Le but de ce document est d’aider les débutants en Matlab, en introduisant


les commandes les plus courantes.

L’avantage de Matlab, c’est que c’est un langage interprété, c’est à dire qu’il
exécute directement les commandes introduites par l’utilisateur sans passer
par une étape de compilation. De plus, Matlab possède un très grand nombre
de fonctions allant des fonctions élémentaires telles que les fonctions trigono-
métriques, les opérations sur les matrices, la génération de nombres aléatoires
jusqu’aux fonctions les plus compliquées telles que des méthodes numériques
pour le calcul matriciel ou la résolution d’équations différentielles ou encore
des méthodes d’optimisation. Il contient aussi des outils de représentation gra-
phique en 2D ou 3D.

Lors de son lancement (via la commande Matlab par exemple), l’interface


graphique de Matlab 3 se présente (voir figure 1) comme plusieurs fenêtres
avec une barre de menu.

Command Window
1. http ://www.mathworks.com/
2. http ://www.mathworks.com/products/matlab/index.html
3. Cette interface est relative à la version de Matlab de 2007.

Enseignant: CHEMKHI Majed GL3


v

Figure 1 – Interface de Matlab (version R2009 b).


Après le lancement de Matlab, une fenêtre de commande apparaı̂t qui permet
à l’utilisateur de taper une commande quelconque obéissant à la syntaxe de
Matlab. : (voir figure 2)

Figure 2 – Interface de Matlab : Command Window.


Workspace

Les variables définies par l’utilisateur sont rangées dans l’espace mémoire de
Matlab, ces variables sont dites globales.

Le ”Workspace” permet d’observer les variables existantes. Les commandes


who ou whos permettent d’obtenir les mêmes informations. (voir figure 3)

Current Folder

Enseignant: CHEMKHI Majed GL3


vi

Figure 3 – Interface de Matlab : Workspace.


Matlab permet d’ouvrir, de créer, de modifier etc ..., des fichiers. Matlab sau-
vegarde tous les fichiers créés dans le répertoire par défaut qu’il est possible de
modifier à l’aide de la commande cd ou en lançant le Current Folder. (voir
figure 4)

Figure 4 – Interface de Matlab : Current Folder.

La fenêtre suivante apparaı̂t, il est alors possible de changer le répertoire cou-


rant. Quand une commande est tapée, Matlab recherche celle-ci dans l’ensemble
des répertoires dont la liste apparaı̂t dans la fenêtre path, on peut ajouter ou
supprimer un répertoire de son choix.

Command History

Contient l’historique des commandes. Elle permet donc de ne pas réecrire d’an-
ciennes (longues) commandes et ceci en cliquant sur la commande qu’on veut
lancer. Il est aussi possible de relancer une ancienne commande en tapant sur

Enseignant: CHEMKHI Majed GL3


vii

la flêche du haut du clavier dans la fenêtre de commandes. (voir figure 5)

Figure 5 – Interface de Matlab : Command History.

Pour quitter Matlab, on a le choix entre sélectionner ‘Exit MATLAB’ dans le


menu ‘File’ ou bien taper la commande ‘exit’ dans la fenêtre des commandes.

Un exemple de commande Matlab est

>> a=2+3

Lorsque l’utilisateur entre cette commande et la valide, la réponse affichée par


Matlab sera :

>> a=
5

Matlab contient aussi des commandes générales qu’on appellera commandes


d’environnement et qui permettent de simplifier le travail de l’utilisateur. Les
commandes les plus courantes sont décrites dans la section qui suit.

2 Commandes d’environnement

Les commandes d’environnement de Matlab les plus courantes sont :

Enseignant: CHEMKHI Majed GL3


viii

– cd : permet de se déplacer sous Matlab d’un répertoire à un autre.


– ls ou dir : affiche les fichiers contenus dans le répertoire courant (ou un
autre répertoire)
– pwd : affiche le répertoire courant
– who ou whos : liste les variables déjà déclarées par l’utilisateur (afin par
exemple d’éviter la redéclaration d’une variable)
– clear all : supprime la liste des variables déjà déclarées
– clc : efface l’ensemble des commandes Matlab introduites sur l’écran
– exit ou quit : permet de quitter l’interface Matlab
– tic et toc : Ces commandes sont utilisées de la manière suivante :
>> tic ; ensemble de commandes ; toc
Ils permettent de calculer le temps mis pas Matlab pour exécuter une com-
mande ou un script. Ceci est particulièrement utile lors de la programma-
tion parallèle ou aussi pour avoir une idée sur le temps global d’un calcul
d’un grand échantillon de données en commencant au préalable par un petit
échantillion.
– cputime : retourne te temps total (en secondes) mis par l’application Mat-
lab.

3 Éléments d’aide de Matlab

Matlab est une énorme librairie de fonctions prédéfinies. Pour pouvoir décou-
vrir l’ensemble des commandes prédéfinies dans Matlab, on peut tout simple-
ment taper help. La commande affiche donc la totalité des topics (fonctionna-
liées regroupées). On cite par exemple :
– Matlab/general,
– Matlab/2d,
– Matlab/elmat,
– Matlab/elfun,
– ...

Enseignant: CHEMKHI Majed GL3


ix

Si on cherche à connaı̂tre la syntaxe correcte et/ou les options pour utiliser une
commande donnée (par exemple la commande plot pour tracer des figures), on
fait help plot.

La commande help NomRepertoire permet d’accéder à la liste des aides de


fonctions contenues dans le répertoire NomRepertoire. Et la commande helpdesk
ouvre une fenêtre d’aide interactive.

Lorsqu’on cherche à déterminer la commande permettant de faire une tâche


donnée sans avoir une idée sur le nom de cette commande, on peut utiliser la
commande lookfor. Par exemple, pour déterminer la commande permettant de
calculer le cosinus d’un réel, on peut entrer la commande :

>> lookfor cosinus

Remarque : les commandes Matlab doivent toujours être tapées en minus-


cules même si dans l’aide en ligne elles apparaissent en majuscules.

Exercice :
Trouver dans l’aide le nom de la fonction renvoyant les valeurs propres d’une
matrice.

4 Opérations arithmétiques simples, scalaires


et chaı̂nes de caractères

L’opération la plus élémentaire sous Matlab est l’affectation. On peut par


exemple déclarer un scalaire en tapant a=10. Si on exécute une opération,
par exemple 2 + 3, et qu’on ne stocke pas la résultat dans une variable, le
résultat de cette opération sera automatiquement stocké dans une variable ans
qu’on pourra utiliser par la suite. Dans le cas où l’on ne veut pas afficher sur
l’écran le résultat d’une commande, il suffit d’ajouter après la commande un

Enseignant: CHEMKHI Majed GL3


x

point-virgule.

Une expression arithmétique effectue un calcul à l’aide des opérateurs suivants :


+ (addition), - (soustraction), * (multiplication), / (division) et ^ (puissance).

Les nombres réels sont écrits sous les formes décimales ou scientifiques usuelles :
2, 3.214, -.546, 1.21e33, 5.78e-16, ...

Il existe aussi certains scalaires prédéfinis tels que pi (π), NaN (Not a Num-
ber), Inf (∞), eps (= 2.2204e-16, precision machine), realmin (=2.2251e-308),
realmax (1.7977e+308), ...


La constante i est le nombre imaginaire −1 prédéclaré. Les nombres com-
plexes sont écrits sous la forme a + bi où a et b sont des nombres réels. Il est
impératif de ne mettre aucun blanc entre le nombre b et i. Ainsi 3+ 4i et 3 +
4i sont valables mais 3+4 i n’est pas reconnu.

Pour comparer deux réels, on peut utiliser les commandes pour la comparaison.
On en cite >=, <, . . .

Les chaı̂nes de caractères sont déclarées avec des apostrophes. Un exemple de


déclaration est :

>> c=’Bonjour’

Exercice :
Chercher les commandes dans l’aide de Matlab qui permettent de donner le
logarithme et la racine carrée, le carré et la partie entière d’un réel.

5 Construction et opérations sur les vecteurs

Il existe plusieurs moyens pour consruire un vecteur :

Enseignant: CHEMKHI Majed GL3


xi

– vecteur ligne : v=[1 2 -5] ou v=[1, 2, -5]


– vecteur colonne : v=[1 ; 2 ; -5] ou v=[1 2 -5] ’

Remarque :
T
L’opérateur transposé ”’” transforme un vecteur V en V . Par exemple : la
commande [1, 2- 3i]’ donne comme résultat :
1
2+3i

Pour accéder au ième élément d’un vecteur v, on tape v(i).

Si le vecteur est trop long, on peut le crée, dans certains cas, de manière
automatique :
v=[1:4] ou v=[2:3:15].

On peut aussi utiliser des structures itératives tels que la boucle for qu’on
définira par la suite. Dans ce cas, on crée un vecteur vide : v=[] puis on le
concatène en faisant par exemple v=[v,2]

On peut créer un vecteur contenant que des ‘0’ ou des ‘1’ en tapant :
v=zeros(2,1) 4 , w=ones(5,1) ou aussi des nombres aléatoires en utilisant la
commande v=rand(5,1).

Exercice : Tapez les commandes suivantes et en commenter les résultats :

n=5, u=rand(n,1), u/2, u./2, 2./u, u(3), u(2:n-1), u(end),


length(u), size(u), v=ones(5,1),v=2u, v= 2*u - 3*v,
u*v, u.*v, u’, u*v’,v’*u, u^2, u.^2, 2.^u, 2^u.
4. Cette commande donne un vecteur colonne à deux linges. La commande v=zeros(1,2)
donnerait un vecteur ligne à deux colonnes.

Enseignant: CHEMKHI Majed GL3


xii

Exercice : On note u, v et w les vecteurs suivants :

u = (1, −1, −3, −5)T , v = (10, −1, 3, 1)T , w = (5, −1, 4, 5)T .

Calculer 3u, ||u||2 , 2u − v + 4w, ||2u − v + 4w||1 , ||v − 3w||∞ .

6 Polynômes

Dans Matlab, un polynôme est représenté par le vecteur de ses coefficients,


commençant par le degré le plus élevé. Par exemple, pour déclarer le polynôme :
P (x) = 3x2 − 5x + 2, il suffit de le représenter par le vecteur P :

>> P = [3 -5 2]
P = 3 -5 2

Exercice :
Soit Q le polynôme défini par : Q(x) = 3x3 − 4x + 1.
1) Utiliser la fonction polyval, pour calculer les Q(1), Q(3), Q(−5).
2) Soit x le vecteur déclaré par la commande x=[-1:0.1:2]. Entrer la com-
mande polyval(Q,x) et observer le résulat.
3) Résoudre l’équation Q(x) = 0.
4) Donner la dérivée de Q.

7 Construction et opérations sur les matrices

Les matrices se déclarent comme des vecteurs. En effet, Matlab considère les
vecteurs comme des matrices spécifiques (à une seule ligne ou une seule co-
lonne) et considère les scalaires commes de matrices de dimension 1 × 1.

En déclarant une matrice de la manière suivante :

Enseignant: CHEMKHI Majed GL3


xiii

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

on obtient le résultat suivant :

A= 1 2
3 5

Pour accéder à l’élément dans la ime ligne de la j me colonne d’une matrice A,


il suffit de taper A(i,j).

Exercice :
Entrer les commandes suivantes et en commenter les résultats :
1) A=rand(4,3), A(2,:), A(:,3), A(1:2,2:3), length(A), size(A).
2) eye(2), eye(2,4), ones(2,6), ones(3), zeros(5), zeros(4,3).
3) Soient C=rand(3,3) et D=rand(3,3). Que font les instructions suivantes :

3*C, C.*D, C./D, C.^ D, cos(C), exp(D)

Exercice :
On note par A, B et C les matrices suivantes

 
1 3 2    
 
 −5 3 1 1 −2 5 10 −5
A= , B= , C= .
 
−10 0 3 6 1 −1 3 1
 
1 0 −2

1) Calculer avec Matlab, quand c’est possible, les produits AB, BA, BC, CB
et AB T . Pour certains produits Matlab renvoie un message d’erreur, expliquer
pourquoi ?
2) Calculer la matrice D = I2 − BB T .
3) Calculer les déterminants des matrices A, B, C, D et E = AAT .
4) Calculer les inverses des matrices A, B, C, D et E.

Enseignant: CHEMKHI Majed GL3


xiv

5) Calculer les valeurs propres de la matrice E. Quel est le rayon spectral de


E ? 6) Déterminer les vecteurs propres de la matrice E ?

Il est aussi possible de créer une matrice par concaténation. Lorsque les dimen-
sions de deux matrices A et B sont adéquates, on peut lancer la commande [A
B] ou [A,B] qui donnera une nouvelle matrice.

Exercice :
1) Concaténer les matrices A=rand(4,3) et B=ones(1,3) en utilisant la bonne
opération.
2) Construire la matrice

 
1 2.4 0 0 0 0 5
 
1 0 2.4 0 0 0 6
 
 
1 0 0 2.4 0 0 7
 
 
1 0 0 0 2.4 0 8
 
1 0 0 0 0 2.4 9

en utilisant la concaténation.

Exercice : (Matrices diagonales)


Construire la matrice tridiagonale suivante

 
1 −2 0 0 0
 
4 1 −1 0 0
 
 
A=
0 9 1 0 0
 
0 0 16 1 1
 
0 0 0 25 1

en utilisant la manière la plus simple possible.

Les matrices modélisant cetrains phénomènes physiques sont souvent creuses


c’est à dire contenant beaucoup d’éléments nuls. Il a donc été prévu sous

Enseignant: CHEMKHI Majed GL3


xv

Matlab de ne pas stocker les ‘zéros’ des matrices creuses et ce afin de gagner en
place mémoire. Les commandes prévues pour cette tâche sont les commandes
sparse et full. Ainsi, la commande sA = sparse(A) génère une matrice sA
qui ne comporte (en mémoire) que les éléments non nuls de A. On peut revenir
à A par A = full(sA).

Exercice :
1) Consulter l’aide de Matlab pour découvrir les fonctions sparse, full,
spdiags, speye, spones et sprandn.
2) Exécuter la commande sparse(A) où A est la matrice déclarée dans l’exer-
cice précédent.

8 Structures conditionnelles et itératives

8.1 Opérateurs booléens

Les structures if, switch et while sont souvent associées à des expressions
booléennes. Ces expressions booléennes utilisent des opératuers booléens tels
que :

Les opérateurs booléens sont ”NON” ( e =), ”EGAL” (==), ”OU” (|), ”ET” (&)
et ”OU EXCLUSIF” (xor).

Exercice :
Entrer successivement les commandes suivantes puis les commenter :
a=5, a==5 et a==3.

8.2 Structure conditionnelle ‘if ’

Les diffèrentes syntaxes du test (if) sont :

Enseignant: CHEMKHI Majed GL3


8.3 Branchement ‘switch’ xvi

1)
if expression booléenne
instructions
end

2)
if expression booléenne
instructions
else
instructions
end
3)
if expression booléenne
instructions
elseif expression booléenne
instructions
else
instructions
end

8.3 Branchement ‘switch’

Le branchement switch effectue, en fonction de la valeur d’une expression


donnée (scalaire ou chaı̂ne de caractères), un traitement donné. La syntaxe de
ce branchement est la suivante :

switch expression
case valeur 1
suite d’instructions 1
case valeur 2
suite d’instructions 2
..
.

Enseignant: CHEMKHI Majed GL3


8.4 Boucle ‘for’ xvii

case valeur N
suite d’instructions N
otherwise
autres instructions
end

8.4 Boucle ‘for’

La syntaxe de la boucle for est la suivante :

for indice=debut :pas :fin


instructions
end

Remarque :
Dans la structutre précédente, si le pas est égal à 1, on peut remplacer l’écriture
”debut :1 :fin :” par ”debut :fin”.

Exercice
1) Déclarer le vecteur u=rand(4,1).
2) Exécuter la commande v1=sin(u).
3) Exécuter la commande

for i=1..size(u),
v2(i)=sin(u(i))
end

Cette commande est-elle correcte ? La rectifier si nécessaire.


4) Comparer v1 et v2.

Enseignant: CHEMKHI Majed GL3


8.5 Boucle ‘while’ xviii

8.5 Boucle ‘while’

La syntaxe de la boucle while est la suivante :

while expression
instructions
end

Exercice
En utilisant la boucle while, écrire une commande qui permet de déterminer
si l’entier 137 est premier ou non.

9 Programmation et utilisation de fonctions

9.1 Scripts

Si les commandes entrées par l’utilisateur sont de plus en plus compliquées et


nécessitent d’introduire de nouvelles fonctions, il est possible d’utiliser l’éditeur
de textes incorporé dans Matlab pour créer des scripts ayant en général l’exten-
sion “.m”. On peut lancer par la suite les commandes contenues dans un script
ExempleScript.m en tapant juste ExempleScript dans l’invite de commandes
Matlab.

Remarques :
1) Pour lister l’ensemble des fichiers *.m ou *.mat disponibles, il suffit d’utiliser
la commande what.
2) Lors de l’édition d’un script, il est possible de rajouter des commentaires
explicatifs sur l’utilité et l’intérêt des commandes écrites. Ces commentaires
peuvent simplifier l’utilisation et la compréhension du contenu du script par un
autre utilisateur. Un commentaire est toujours précédé par le signe % comme
l’indique l’exemple suivant :

Enseignant: CHEMKHI Majed GL3


9.2 Fonctions xix

% Ceci est un commentaire.

Exercice :
1) Créer à partir de l’éditeur de Matlab un fichier ExempleScript.m contenant
les lignes suivantes :

V=rand(10,1);
M=abs(V(1));
for i=2:length(V)
if (abs(V(i)) > M)
M=abs(V(i));
end
end

2) Taper dans l’invite de commande Matlab la commande ExempleScript et


observez le résultat.

9.2 Fonctions

Pour expliquer l’utilité de la notion de fonctions, on va reprendre l’exemple


précédent. Le script ExempleScript.m permet de calculer la norme infinie du
vecteur V déclaré dans le même script. Si on a souvent recours au calcul de la
norme infinie d’un vecteur, il est plus commode de déclarer une fonction, qui
prend comme entrée un vecteur V et renvoi un retour sa norme infinie 5 . Ainsi,
on crée un fichier NormeInf.m dans lequel on déclare la fonction NormeInf de
la facon suivante

function [M] = NormeInf(V)


M=abs(V(1));
5. Cette fonction existe déjà sous Matlab mais on donne cet exemple pour expliquer la
notion de fonction.

Enseignant: CHEMKHI Majed GL3


9.2 Fonctions xx

for i=2: size(V)


if (abs(V(i)) > M)
M=abs(V(i));
end
end

Par la suite, on lance dans l’invite des commandes Matlab la commande :

NormeInf(rand(12,1))

Pour généraliser, une fonction se déclare come suit :

function [args1,args2,...] = nomfonction(arge1,arge2,...)


instructions
end

Pour exécuter cette fonction, on utilise la commande :

[vars1,vars2,...]=nomfonction(vare1,vare2,..)

Remarques :
1) Le nom d’une fonction nomfonction doit être déclaré dans un script appelé
nomfonction.m.
2) Une fonction peut être déclarée enrichie de commentaires de la manière
suivante :

function [args1,args2,...] = nomfonction(arge1,arge2,...)


% Commentaires explicatifs sur le rôle de la fonction
instructions

Cette façon de déclarer la fonction, permet à un utilisateur qui entre la com-


mande

help nomfonction

Enseignant: CHEMKHI Majed GL3


xxi

d’avoir comme réponse les commentaires explicatifs entrées lors de la déclara-


tion de la fonction nomfonction.

On peut aussi utiliser la commande inline pour définir des fonctions sous
forme analytique. Par exemple, la commande

>> f = inline(’sin(x)+x’, ’x’)

définit l’application f (x) = sin(x) + x.

Exercice :
Ecrire les fonctions permettant de calculer pour un vecteur X = (x1 , x2 , . . . , xn )
de Rn sa norme
Pi=n
1) kXk1 = i=1 |xi |.
P 1/2
i=n 2
2) kXk2 = i=1 xi .

Exercice :
Reprendre la fonction NormInf déclarée ci-dessus et la réécrire en utilisant la
commande sort.

10 Opérations d’entrée/sortie

10.1 Entrée/Sortie de données texte

10.1.1 Affichage dans la sortie standard de Matlab

La commande la plus élémentaire pour afficher sur l’interface de matlab le


contenu d’une variable est la commande disp. Par exemple, pour afficher le
contenu d’une variable a, on fait disp (a).

Enseignant: CHEMKHI Majed GL3


10.1 Entrée/Sortie de données texte xxii

Exercice :
Exécuter successivement les commandes a=12, disp (a), disp a et disp (’a’)
et commenter les résultats.

Dans le cas où l’on veut afficher des messages plus élégants du type :
”Les variables a et b sont 2 et 2.3”.
on peut utiliser la commande sprintf comme suit :

sprintf(’Les variables a et b sont :%d et %f’,a,b)

Dans cette commande, on a utilisé le %d pour afficher la variable a en for-


mat entier et %f (float) pour afficher b en un format réel avec une précision
particulière. Pour plus de détails sur les diffèrents formats d’affichage, on peut
se réfèrer aux sections 10.1.2 et 10.3 ou on peut entrer la commande help
format.

10.1.2 Lecture/écriture dans un fichier

Pour ouvrir un fichier, on utilise

>> fid=fopen(’NomFichier’, Mode)

où Mode est le mode d’ouverture :


’r’ : lecture seule
’w’ : création ou lecture.

Le paramètre de sortie ‘fid’ =-1 si erreur ; > 1 autrement.

La commande

>> A = fscanf(fid,format)

Enseignant: CHEMKHI Majed GL3


10.2 Entée/Sortie des données formatées xxiii

permet de lire à partir d’un fichier (en ASCII) les données avec le format
spécifié. Un format est une chaı̂ne de caractères spécifiant en lecture le type de
données à lire :
\%d : pour un entier
\%f : pour un réel
\%c : pour un caractère.

Optionellement, le nombre maximal de données à lire peut être spécifié avec le


paramètre d’entrée ‘size’ :

>> [A,count] = fscanf(fid,format,size)

Le paramètre de sortie ‘count’ renvoie le nombre de données effectivement lues.

Pour fermer un fichier, on utilise

>> statut = close(fid)

Le paramètre de sortie ‘statut’ =0 si succès ; =-1 si erreur.

10.2 Entée/Sortie des données formatées

Il est possible de sauvegarder une ou plusieurs variables dans un fichier spé-


cifique Matlab dont l’extension est ‘.mat’. La commande à utiliser est save.
Voici quelques exemples d’utilisation de cette commande avec des différentes
options :

save fname : sauve (format binaire par défaut) tous les variables de la session ;
save fname X : sauve X seulement ;
save fname X Y Z : sauve X, Y, et Z ;
save fname X -ascii : utilise le format ASCII 8-digit ;
save fname X -ascii -double : utilise le format ASCII 16-digit ;

Enseignant: CHEMKHI Majed GL3


10.2 Entée/Sortie des données formatées xxiv

save fname X -ascii -tab : utilise le format ASCII 8-digit délimité par des
tabs.

On peut aussi effectuer la sauvegrde des variables en tapant :


save(fname, ’X’, ’Y’);

Pour recharger un tel fichier on utilisera la commande load fname ou de ma-


nière équivalent la commande load(fname) Chaque variable ayant été sauve-
gardée par son nom, les variables rechargées auront les noms, dimensions et
valeurs au moment de la sauvegarde. Toutefois, il faut en général prévoir le cas
de non existence de fichier qu’on veut recharger. Dans ce cas, il est préférable
de tester l’existence du fichier avant en faisant

if exist(fname, ’file’)
load(fname);
end;

Exercice :
Écrire une commande qui permet de vérifier si un répertoire ’REP’ existe ou
pas et de le créer en faisant mkdir sinon.

Remarque :
D’autres commandes comme fclose, fwrite, fseek, fprintf sont prévus
pour le traitements des opération d’entrée/sortie depuis et vers des fichiers.
Des détails sur ces commandes (et d’autres) sont disponibles dans la table
Entrée-sortie de la section 12.

Enseignant: CHEMKHI Majed GL3


10.3 Formats d’affichage xxv

10.3 Formats d’affichage

Tous les calculs effectués dans Matlab le sont en double précision. Cependant
le format d’affichage des résultats peut être contrôlé par la commande format.
On distingue les formats suivants :

format short 4 décimales (par défaut)


format long 14 décimales
format short e 4 décimales notation scientifique
format long e 14 décimales notation scientifique
format rat approximation par une fraction rationnelle

Exercice :
On considère une expérience simple qui consiste à créer aléatoirement uni-
formément un vecteur de taille i et de sauvegarder sa norme dans un fichier
nommé Expériencei.mat.
On suppose que l’on doit effectuer 10 fois cette expérience (pour i ∈ [1, 10]) et
sauvegarder les résultats de ces 10 expériences dans les fichiers Expériencei.mat
correspondant. En utilisant la boucle ’for’, sauvegarder de manière automa-
tique ces résultats dans les fichiers correspondants.

11 Utilisation des graphiques

Pour consulter l’aide sur tout ce qui est représentations graphiques, on peut
taper help plot.
Les principales fonctions pour les graphiques 2D sont :
plot, plotyy, loglog, semilogx, semilogy, figure, close, subplot, . . .

Enseignant: CHEMKHI Majed GL3


11.1 Graphes en 2D xxvi

11.1 Graphes en 2D

Exercice
1) Effectuer successivement les commandes suivantes et commenter les résultats
obtenus

>> x=-1:0.1:1
>> y=sin(x)
>> plot(x,y)
>> title(’Exemple de graphique 2D’)
>> xlabel(’Axe des abscisses’)
>> ylabel(’Axe des ordonnees’)
>> grid on
>> hold on
>> plot(x,cos(x),’+r’);
>> plot(x,sin(x),’+-b’);

2) Cherchez dans l’aide Matlab les commandes permettant :


– la sauvegarde des figures,
– l’ajout d’une légende sur une figure,
– la modification de la police,
– la modification des longueurs des axes.
Exercice Faire la représentation graphique de la fonction f définie par

f (x) = cos2 (x) x ∈ [0, 5]

1) Pour tracer, on utilisera 6 points puis 26 et enfin 301 points équirépartis


dans le segment [0, 5].
Préciser dans chaque cas la subdivision utilisée.
2) Représenter sur la même figure les fonctions :
f (x) = cos2 (x), g(x) = cos(2x), h(x) = cos(x2 ), pour x ∈ [0, 5]. Penser à
utiliser des symboles différents pour les différentes représentations graphiques
et à mettre une légende. On pourra faire help plot pour consulter la liste des
options, styles et symboles.

Enseignant: CHEMKHI Majed GL3


11.2 Graphes en 3D xxvii

• Plusieurs graphes sur une même figure

Cette fonctionnalité est assurée par la commande subplot.

Exercice Déclarer les vecteurs X = [0, π/10, 2π/10, ...., 2π], Y 1 = sin(X) et
Y 2 = cos(X), puis utiliser subplot(2,1,1) et subplot(2,1,2) pour tracer
sur une même figure les deux graphes des fonctions sinus et cosinus, l’un en
dessous de l’autre.

11.2 Graphes en 3D

Les principales fonctions disponibles pour tracer des graphes en 3D sont :


plot3, mesh, meshgrid, surf, surfc, ezmesh, ezmeshc, ezsurf, ezsurfc,
sphere, cylinder,

Exercice Utiliser l’aide de Matlab pour découvrir ce que font ces fonctions.

11.2.1 Courbes paramétrées

Exercice Tracer la courbe paramétrique x = cos(t), y = sin(t) et z = t2 en


utilisant la commande adéquate, où t = [0, π/10, . . . , 10π].

11.2.2 Surfaces

p
Exercice 1) Tracer la surface z = sin(r)/r où r = x2 + y 2 + z 2 en utilisant
la commande ezmesh puis la commande ezsurfc.
2) Pour un tracé de meilleure qualité (dégradé de couleur sans grid), taper
ensuite shading interp.

Enseignant: CHEMKHI Majed GL3


xxviii

12 Liste des commandes utiles

Aides et commandes générales


demo Programme de démonstration
exit Quitte Matlab
help Aide en ligne
info Informations sur Matlab et The MatWorks
lookfor Recherche par mot clé dans les textes d’aide en ligne
matlabrc Script de démarrage
path Contrôle du chemin de recherche des commandes
quit Exécute le script finish.m et quitte Matlab
type Affiche le contenu d’un fichier M
what Liste des fichiers M, MAT et MEX du répertoire courant
which Localise fonctions et fichiers

Variables et espace de travail


clear Efface variables et fonctions de l’espace de travail
disp Affiche texte et matrice
length Longueur d’un vecteur
load Charge le contenu de variables sauvegardées sur disque
pack Défragmente la mémoire
save Sauve le contenu de variables sur disque
size Dimensions d’une matrice
who Affiche la liste des variables de l’espace de travail
whos Identique à who avec plus de détails

Enseignant: CHEMKHI Majed GL3


xxix

Commandes système
cd Change de répertoire
delete Détruit un fichier
diary Sauvegarde la session en cours dans un fichier texte
dir Affiche le contenu du répertoire courant
getenv Retourne la valeur d’une variable d’environement
unix Exécute une commande système et retourne le résultat
! Exécute une commande système

Contrôle de la fenêtre des commandes


clc Efface la fenêtre des commandes
echo Renvoie les commandes d’un fichier M
format Contrôle le format d’affichage
home Place le curseur en haut de la fenêtre des commandes
more Affichage page par page dans la fenêtre

Horloges
clock Date et heure sous forme de vecteur
cputime Temps CPU
date La date d’aujourd’hui
etime Mesure un intervalle de temps
tic, toc Chronomètre

Enseignant: CHEMKHI Majed GL3


xxx

Opérateurs et caractères spéciaux


+ Plus
- Moins
* Produit
.* Produit élément par élément
^ Puissance de matrice
.^ Puissance élément par élément
kron Produit tensoriel de Kronecker
\ Backslash ou division à gauche
.\ Division à gauche élément par élément
/ Slash ou division à droite
./ Division à droite élément par élément
: Indices ou génération de vecteur
() Parenthèses, arguments d’entrée de fonction
[] Crochets, arguments de sortie de fonction
. Point décimal
.. Répertoire parent
... Continue l’instruction sur la ligne suivante
,; Séparateurs
% Commentaires
! Commande système
’ Transposition (complexe conjugué), chaine de caractère
.’ Transposition non complexe
= Affectation
== Egalité
<> Opérateurs relationnels
& ET logique
| OU logique
~X NON logique
xor OU EXCLUSIF logique

Enseignant: CHEMKHI Majed GL3


xxxi

Variables et constantes prédéfinies


ans Variable d’affectation par défaut
computer Type d’ordinateur et de système
eps Epsilon machine
i, j Unités imaginaires
inf Infini
NaN Not-a-number
nargin Nombre d’arguments d’entrée d’une fonction
nargout Nombre d’arguments de sortie
pi 3.14159265358979
realmax Plus grand nombre flottant
realmin Plus petit nombre flottant

Enseignant: CHEMKHI Majed GL3


xxxii

Fonctions mathématiques élémentaires


abs Valeur absolue
acos Cosinus inverse
acosh Cosinus hyperbolique inverse
angle Argument
asin Sinus inverse
asinh Sinus hyperbolique inverse
atan Tangente inverse
atanh Tangente hyperbolique inverse
ceil Plafond
conj Conjugué
cos Cosinus
cosh Cosinus hyperbolique
exp Exponentielle
fix Arrondi vers 0
floor Plancher
imag Partie imaginaire
log Logarithme népérien
log10 Logarithme décimal
real Partie réelle
rem Reste de la division euclidienne
round Arrondi vers l’entier le plus proche
sign Signe
sinh Sinus hyperbolique
sqrt Racine carrée
tan Tangente
tanh Tangente hyperbolique

Enseignant: CHEMKHI Majed GL3


xxxiii

Fonctions logiques
all Vrai si tous les éléments d’un vecteur sont non nuls
any Vrai si au moins un élément d’un vecteur est non nul
exist Vérifie si une variable ou une fonction existe
find Retourne les indices des élélements non nuls
isempty Vrai pour matrice vide
isinf Vrai pour élément infini
isnan Vrai pour NaN (Not-a-Number)
issparse Vrai pour matrice creuse
isstr Vrai pour chaine de caractère

Instructions de contrôle
break Termine une boucle
else sinon, utilisé avec if
elseif sinon si, utilisé avec if
end Termine for, if et while
error Retourne un message d’erreur et termine une fonction
for Répétition
if Instruction conditionnelle
return Retour à la fonction appelante
while Boucle tant que

Instructions interactives
input Attente d’une entrée au clavier
keyboard Donne la main à l’utilisateur juqu’à un return
menu Crée un menu
pause Attente de réponse

Enseignant: CHEMKHI Majed GL3


xxxiv

Création de matrices
eye Matrice identité
linspace Génère des vecteurs espacés arithmétiquement
logspace Génère des vecteur espacés logarithmiquement
meshgrid Génère une grille pour les graphes en 3D
ones Matrice de 1
rand Générateur aléatoire selon une loi uniforme
randn Générateur aléatoire selon une loi normale
zeros Matrice de 0

Manipulation de matrice
diag Crée ou extrait une matrice diagonale
fliplr Permutte les colonnes d’une matrice
flipud Permutte les lignes d’une matrice
reshape Modifie la taille d’une matrice
rot90 Rotation de 90◦ dans le sens trigonométrique
tril Extrait une matrice triangualaire inférieure
triu Extrait une matrice triangualaire supérieure

Enseignant: CHEMKHI Majed GL3


xxxv

Analyse numérique matricielle


chol Factorisation de Cholesky
cond Conditionnement
det Déterminant
eig Valeurs propres et vecteurs propres
inv Inverse
lscov Moindres carrés avec matrice de covariance donnée
lu Factorisation LU
nnls Moindres carrés avec contrainte de positivité
norm Norme
null Base orthonormale du noyau
orth Base orthonormale de l’image
pinv Pseudoinverse
poly Polynôme caractéristique
rank Rang (= dimension de l’image)
svd Décomposition en valeurs singulières
trace Somme des éléments diagonaux
/ Résolution d’équations linéaires

Enseignant: CHEMKHI Majed GL3


xxxvi

Analyse de données
corrcoef Coefficients de corrélation
cov Matrice de covariance
cumprod Produits cumulés des composantes
cumsum Sommes cumulées des composantes
max Plus grande composante
mean Moyenne des composantes
median Médiane des composantes
min Plus petite composante
prod Produit des composantes
sort Tri des composantes
std Ecart type des composantes
sum Somme des composantes

Polynômes
conv Produit de polynômes
deconv Division de polynômes
poly Définit un polynôme à partir des racines
polyder Polynôme dérivé
polyfit Interpolation polynomiale
polyval Valeur d’un polynôme
polyvalm Valeur d’un polynôme avec argument matriciel
residue Décomposition de fraction rationnelle
roots Racines d’un polynôme

Enseignant: CHEMKHI Majed GL3


xxxvii

Méthodes numériques
del2 Approximation du Laplacien
diff Différences finies
gradient Approximation du gradient
fmin Minimise une fonction d’une variable
fmins Minimise une fonction de plusieurs variables
fplot Graphe de fonction
fzero Zéro d’une fonction d’une variable
ode43 Intégration e.d.o.
ode45 Intégration e.d.o., méthodes d’ordre supérieur
quad Intégration numérique
quad8 Intégration numérique, méthodes d’ordre supérieur
trapz Intégration numérique, méthode des trapèzes

Chaines de caractères
lower Conversion en minuscules
strcmp Comparaison de chaines de caractères
upper Conversion en majuscules
int2str Entier → Chaine
num2str Valeur numérique → Chaine
sprintf Ecriture formatée
sscanf Lecture formatée
str2num Chaine → Valeur numérique

Enseignant: CHEMKHI Majed GL3


xxxviii

Entrée-sortie
fclose Ferme un fichier
ferror Nature d’une erreur d’entrée-sortie
fgetl Lecture de ligne, pointeur en fin de ligne
fgets Lecture de ligne, pointeur en début de ligne
fopen Ouvre un fichier
fprintf Ecriture de données formatées
fread Lecture de données binaires dans un fichier
frewind Pointeur en début de fichier
fscanf Lecture de données formatées
fseek Positionne le pointeur
ftell Renvoie la position du pointeur
fwrite Ecriture de données binaires dans un fichier
sprintf Ecriture de données formatées en chaine de caractères
sscanf Lecture de chaine de caractères selon un format

Graphiques 2D
bar Diagramme en barres
fplot Graphe de fonction
hist Histogramme
plot Graphe 2D
polar Graphe en coordonnées polaires
stairs Graphe en escalier

Graphiques 3D
contour Lignes de niveau
mesh Graphe 3D
surf Graphe 3D avec effet d’ombre

Enseignant: CHEMKHI Majed GL3


xxxix

Commandes graphiques diverses


axes Création d’axes
axis Contrôle des axes de coordonnées
clf Efface la figure courante
close Ferme une fenêtre graphique
figure Ouvre une nouvelle fenêtre graphique
ginput Renvoie la position de la souris sur un graphique
grid Quadrillage
hold Permet d’ajouter des tracés à un graphique déjà existant
legende Ajoute une légende
subplot Plusieurs figures dans un même fenêtre
text Placement de texte
title Titre de graphique
xlabel Titre de l’axe des x
ylabel Titre de l’axe des y
zlabel Titre de l’axe des z

Enseignant: CHEMKHI Majed GL3

Vous aimerez peut-être aussi