Vous êtes sur la page 1sur 11

Universit Abdelhamid Ibn Badis - Mostaganem

Facult des Sciences Exactes et dInformatique- Dpartement de Physique


2me anne Master : Physique des Matriaux.

INITIATION A MATLAB
1. INTRODUCTION:
MATLAB (MATrix LABoratory) contient un systme puissant d'oprateurs s'appliquant des matrices,
des algorithmes, des fonctions graphiques, ainsi qu'un langage de programmation simple utiliser.
MATLAB est disponible sur tous types de plates-formes (toutes les stations sous UNIX y compris
LINUX, Windows et Macintosh).

2. PRISE EN MAIN
2.1 Dmarrage, quitter: Pour lancer le programme, tapez matlab dans une fentre de commandes, ou en double
cliquant sur licne Matlab. Le symbole >> apparat : c'est l'invite de MATLAB qui attend vos commandes.
Vous pourrez quitter la session avec la commande quit.

2.2 Aide, documentation en ligne: L'aide en ligne peut tre obtenue directement dans la session en tapant help
nom de la commande. La commande help toute seule vous indiquera les diffrents thmes abords dans la
documentation. Toute la documentation papier peut tre consulte sur le WEB avec un navigateur quelconque.

2.3 Calculs lmentaires: Commenons par les oprateurs les plus courants : +, -, *, /, ^ . Le dernier signifie
puissance. Les parenthses s'utilisent de manire classique. Par exemple : tapez une expression mathmatique
quelconque et appuyez sur Entre. Le rsultat est mis automatiquement dans une variable appele ans
(answer). Celle-ci peut tre utilise pour le calcul suivant, par exemple :
>> (3*2)/(5+3)
ans =
0.7500
Si vous voulez afficher les nombres avec plus de prcision, tapez la commande format long. Pour
revenir au comportement initial : format short.

2.4 Historique des commandes: Toutes les commandes que vous aurez tap sous MATLAB peuvent tre
retrouves et dites grce aux touches de direction. Appuyez sur pour remonter dans les commandes
prcdentes, pour redescendre et , , et la touche espace pour diter une commande. Pour relancer une
commande, appuyer directement sur la touche Entre. Vous pouvez retrouver toutes les commandes
commenant par un groupe de lettres.

3. VARIABLES ET FONCTIONS PREDEFINIES

3.1 Variables: Il est bien sr possible de conserver un rsultat de calcul et de le stocker dans des variables. Gros
avantage sur les langages classiques : on ne dclare pas les variables. Leur type (entier, rel, complexe)
s'affectera automatiquement en fonction du calcul effectu. Pour affecter une variable, on dit simplement quoi
elle est gale. Exemple:

>> a=1.2
a=
1.2000
On peut inclure cette variable dans de nouvelles expressions mathmatiques, pour en dfinir une nouvelle :
>> b = 5*a^2+a
b=
8.4000
Et ensuite utiliser ces deux variables :
>> c = a^2 + b^3/2
c=
297.7920

Ces variables ne sont pas affiches en permanence l'cran. Pour voir le contenu d'une variable, taper son nom :
>> b
b=
8.4000 Pour dfinir un complexe :
>> a+ b*i
ans =
1.2000 + 8.4000i

1
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

IMPORTANT : MATLAB fait la diffrence entre les minuscules et les majuscules. Les noms de variables
peuvent avoir une longueur quelconque. Les noms de variables doivent commencer par une lettre.

3.2 Effacement et liste des variables: La commande clear permet d'effacer une partie ou toutes les variables
dfinies jusqu' prsent. Il est conseill de placer cette commande au dbut de vos fichiers de commandes, en
particulier lorsque vous manipulez des tableaux. Si aucune variable n'est spcifie, toutes les variables seront
effaces. La commande who affiche les noms de toutes les variables en cours.
Syntaxe: 1 >> clear var1 var2 var3
>> Clear all %Pour effacer toutes variables utilises.

3.3 Variables prdfinies: Il existe un certain nombre de variables prexistantes. Nous avons dj vu ans qui
contient le dernier rsultat de calcul, ainsi que i et j qui reprsentent . Il existe aussi pi, qui reprsente , et
quelques autres.
Attention: Ces variables ne sont pas protges, donc si vous les affectez, elles ne gardent pas leur
valeur. C'est souvent le problme pour i et j que l'on utilise souvent spontanment comme indices de boucles, de
telle sorte qu'on ne peut plus ensuite dfinir de complexe !!

3.4 Fonctions prdfinies: Toutes les fonctions courantes existent. On retiendra que pour appliquer une fonction
une valeur, il faut mettre cette dernire entre parenthses. Exemple:
>> sin (pi/12)
ans =
0.2588
Quelques fonctions prdfinies: Fonctions trigonomtriques et inverses : sin, cos, tan, asin, acos, atan ,
Fonctions hyperboliques (on rajoute h) : sinh, cosh, tanh, asinh, acosh, atanh, Racine, logarithmes et
exponentielles : sqrt, log, log10, exp.

>> Indique que Matlab attend une commande

Entre au clavier

Le rsultat saffiche

Le rsultat est
calcul et affich

Commande pour tracer la squence b Le graphique va


apparatre dans une autre fentre grid on indique que les
units apparaissent dans le trac sous la forme dune grille

Dans cet exemple a est un vecteur ligne ; en tapant b=a+2 on cre un second vecteur ligne b
en ajoutant 2 chacun des lments de a . On demande un trac en frappant la commande plot ; le rsultat
saffiche dans une nouvelle fentre : en abscisse on obtient le numro dindice et en ordonne la valeur de la
composante correspondante de b .

Affichage dans la nouvelle


fentre des valeurs des
lments de la squence b

Si on met un point-virgule la fin de la ligne de commande, alors la commande est excute mais le rsultat
nest pas affich. >> b = a + 2 ;

2
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

Si on veut entrer une squence longue dintervalles rguliers sans entrer toutes les valeurs on utilise les deux
points :

Il est possible dappliquer des fonctions sur la squence a :

Affiche le sinus de la squence :

4. MATRICES ET TABLEAUX

4.1. Dfinition d'un tableau


On utilise les crochets [ ] pour dfinir le dbut et la fin de la matrice. Pour dfinir une variable M
contenant une matrice, on crira :
>> M = [1 2 3
11 12 13
21 22 23]
M=
1 2 3
11 12 13
21 22 23
Le passage d'une ligne de commande la suivante s'effectuant par la frappe de la touche Entre. On
peut galement utiliser le symbole , qui sert de sparateur de colonne et ; de sparateur de ligne. Ainsi
pour dfinir la matrice prcdente on aurait pu taper :

ou bien, en remplaant la virgule par des blancs :


>> M = [1,2,3;11,12,13;21,22,23]
>> M = [1 2 3;11 12 13;21 22 23]

On peut aussi dfinir des vecteurs, ligne ou colonne, partir de cette syntaxe. Par exemple :
>> U = [1 2 3]

U=
1 2 3
Dfinit un vecteur ligne,

3
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

alors que :
>> V = [11
12
13]
V=
11
12
13
Dfinit un vecteur colonne.

Accs un lment d'un tableau : Il suffit d'entrer le nom du tableau suivi entre parenthses du ou des indices
dont on veut lire ou crire la valeur.
>> M(3,2)
ans =
22
Pour modifier seulement un lment d'un tableau, on utilise le mme principe. Par exemple, je veux que
M(3,2) soit gal 32 au lieu de 22 :
>> M(3,2)=32
M=
1 2 3
11 12 13
21 32 23
Vous remarquerez que MATLAB raffiche du coup toute la matrice, en prenant en compte la
modification. Si on affecte la composante d'une matrice qui n'existe pas encore. Exemple :
>> P(2,3) = 3
P=
0 0 0
0 0 3
MATLAB construit automatiquement un tableau suffisamment grand pour arriver jusqu'aux indices
spcifis, et met des zros partout sauf au terme considr. Vous remarquerez que contrairement aux langages
classiques (comme le Fortran), inutile de dimensionner les tableaux l'avance : ils se construisent au fur et
mesure !

4.2. Extraction de sous-tableaux


Il est souvent utile d'extraire des blocs d'un tableau existant. Pour cela on utilise le caractre : . Il faut
spcifier pour chaque indice la valeur de dbut et la valeur de fin. La syntaxe gnrale est donc la suivante (pour
un tableau deux indices) :
Tableau (dbut:fin, dbut:fin)
Pour extraire le bloc , taper :
>> M(1:2,2:3)
ans =
2 3
12 13
Pour obtenir la deuxime ligne de M :
>> M(2,:)
ans =
11 12 13

4.3. Oprations sur les tableaux


4.3.1 Addition et soustraction: Les deux oprateurs sont les mmes que pour les scalaires. partir du moment o
les deux tableaux concerns ont la mme taille, le tableau rsultant est obtenu en ajoutant ou soustrayant les
termes de chaque tableau.

4.3.2 Multiplication, division et puissance terme terme: Ces oprateurs sont nots .* , ./ et .^
(attention ne pas oublier le point).
Ils sont prvus pour effectuer des oprations termes terme sur deux tableau de mme taille.

4.3.3 Multiplication, division et puissance au sens matriciel: Puisque l'on peut manipuler des matrices, il parat
intressant de disposer d'un multiplication matricielle. Celle-ci se note simplement * et ne doit pas tre
confondue avec la multiplication terme terme. Si l'on crit A*B le nombre de colonnes de A doit tre gal au
nombre de lignes de B pour que la multiplication fonctionne.

4
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

La division a un sens vis--vis des inverses de matrices. Ainsi A/B reprsente A multipli (au sens des
matrices) la matrice inverse de B.

Exemple1 : Pour bien montrer la diffrence entre les oprateurs .* et * , un petit exemple :
>> [1 0; 0 1] * [1 2; 3 4]
1 0 1 2 1x1 0 x3 1x2 0 x4 1 2 ans =

0 1 3 4 0 x1 1x3 0 x2 1x4 3 4 1 2
3 4

La multiplication terme terme : >> [1 0; 0 1] .* [1 2; 3 4]


ans =
1 0
4.3.4. Longueurs de tableau 0 4

La fonction size applique une matrice renvoie un tableau de deux entiers : le premier est le nombre
de lignes, le second le nombre de colonnes. La commande fonctionne aussi sur les vecteurs et renvoie 1 pour le
nombre de lignes (resp. colonnes) d'un vecteur ligne (resp. colonne). Exemple : size (M)

4.3.5. Gnration rapide de tableaux

Matrices classiques: On peut dfinir des matrices de taille donne ne contenant que des 0 avec la fonction zeros,
ou ne contenant que des 1 avec la fonction ones. Il faut spcifier le nombre de lignes et le nombre de colonnes.
Voici deux exemples :
>> ones(2,3)
ans =
1 1 1
1 1 1

>> zeros(1,3)
ans =
0 0 0
La matrice unit est obtenue avec eye. On spcifie seulement la dimension de la matrice (qui est carre...)

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

4.3.6. Listes de valeurs: Cette notion est capitale pour la construction de courbes. Il s'agit de gnrer dans un
vecteur une liste de valeurs quidistantes entre deux valeurs extrmes.
La syntaxe gnrale est : variable = valeur dbut : pas : valeur fin
Par exemple pour crer un vecteur de valeurs quidistantes de 0.1 entre 0 et 1 :

>> x = 0:0.1:1
x=
Columns 1 through 7
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
Columns 8 through 11
0.7000 0.8000 0.9000 1.0000

Il est conseill de mettre un point-virgule la fin de ce type d'instruction pour viter l'affichage
fastidieux du rsultat.
5. Graphique 2D
Une courbe 2D est pour tout logiciel de trac de courbes reprsent par une srie d'abscisses et une srie
d'ordonnes. Ensuite, le logiciel trace gnralement des droites entre ces points. La fonction qui permet de le
faire est plot .

5
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

5.1. L'instruction plot

5.1.1 Tracer une courbe simple: L'utilisation la plus simple de l'instruction plot est la suivante :
plot (vecteur d'abscisses, vecteur dordonnes). Les vecteurs peuvent tre indiffremment ligne ou colonne,
pourvu qu'ils soient tous deux de mme type. Par exemple, si on veut tracer sin (x) sur l'intervalle [0, 2], on
commence par dfinir une srie (raisonnable, disons 100) de valeurs quidistantes sur cet intervalle :

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


>> plot(x, sin(x))

Les axes s'adaptent automatiquement aux valeurs extrmes des abscisses et ordonnes.

5.1.2 Superposer plusieurs courbes: Il suffit de spcifier autant de couples (abscisses, ordonnes) qu'il y a de
courbes tracer. Par exemple pour superposer sin(x) et cos(x) :

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


>>plot(x,cos(x),x, sin(x))

Attention : Si vous essayez par exemple de tracer le graphe de la fonction x x sinx sur [0 , 2]:

>> x = 0:0.1:1;
>> plot(x, x*sin(x))

??? Error using ==> *


Inner matrix dimensions must agree.

Le message derreur indique que lon travaille avec des matrices, alors que lon veut tracer une courbe...
Mais pour MATLAB on manipule des tableaux : il faut utiliser la multiplication terme terme .* .

Rgle: Lorsque l'on crit une expression arithmtique dans les argument de plot, il faut utiliser systmatiquement
les oprateurs terme terme .* ./ et .^ au lieu de * / et ^.

5.1.3 Attributs de courbes: MATLAB attribue des couleurs par dfaut aux courbes. Il est possible de modifier la
couleur, le style du trait et celui des points, en spcifiant aprs chaque couple (abscisse, ordonne) une chane de
caractres (entre quotes) :

Codes spcifier pour modifier les attributs de courbes

5.2.Dcoration des graphiques


5.2.1 L'instruction ''Title'' : L'instruction ''Title'' fournie une chane de caractres. Le titre apparat en haut de la
fentre graphique :

6
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

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


>>plot(x,cos(x),x, sin(x))
>>title('Fonctions sin et cos')

5.2.2 L'instruction ''Labels'': L'instruction ''Labels'' affiche les titres des axes sous les abscisses et cot de l'axe
des ordonnes :

1>>x = 0: 2*pi/100 : 2*pi;


2>>plot(x, cos(x))
3>>xlabel('Abscisse')
4>>ylabel('Ordonne')

5.2.3 L'instruction ''Legend '': Il faut lui communiquer autant de chanes de caractres que de courbes traces
l'cran. Un cadre est alors trac au milieu du graphique, qui affiche le texte correspondant.

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


>>plot(x,cos(x),':',x,sin(x),'-.',x,sqrt(x),'--')
>>legend('cosinus','sinus','racine')

5.2.4 Tracer un quadrillage: C'est l'instruction grid, qui utilis aprs une instruction plot affiche un quadrillage
sur la courbe. Si on tape nouveau grid, le quadrillage disparat.

5.2.5 Plusieurs graphiques avec la commande subplot

On utilise l'instruction subplot pour dcouper la fentre graphique en pavs de mme taille, et d'afficher
un graphe dans chaque pav (en spcifiant le nombre de pavs sur la hauteur, sur la largeur, et le numro du pav
dans lequel on veut tracer)
>>subplot (Nbre pavs sur hauteur, Nbre pavs sur largeur, Numro pav). La virgule peut tre omise. Les pavs
sont numrots dans le sens de la lecture d'un texte : de gauche droite et de haut en bas :

Une fois que l'on a tap une commande subplot, toutes les commandes graphiques suivantes seront excutes
dans le pav spcifi. Exemple :

x = 0: 2*pi/100 : 2*pi;
subplot(221)
plot(x,sin(x))
subplot(222)
plot(x,cos(x),x,sin(x),'-.')
subplot(223)
plot(cos(x),sin(x))
subplot(224)
plot(sin(2*x),sin(3*x))

5.2.6. Instructions graphiques diverses


Si on veut superposer un deuxime graphique un graphique quon vient de tracer, on utilise la
commande hold on, Voici deux programmes traant un sinus et un cosinus

7
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

Si on excute le premier programme, puis la commande hold et le deuxime programme

On superpose ainsi les deux tracs

Effacement de la fentre graphique: Taper clf. Cette commande annule galement toutes les commandes
subplot et hold passes.

6. PROGRAMMATION MATLAB
6.1 Cration de programme dans un fichier

On clique sur File dans le menu puis New et M-File. Ceci fait apparatre une nouvelle fentre
(Editor) dans laquelle on ditera le texte du programme.

Rangement des fichiers dans les dossiers

Il est important de shabituer la gestion des fichiers. Il faut savoir dans quel dossier on range les
fichiers pour pouvoir les retrouver, les modifier ventuellement et les excuter par la suite. Une fois quon a crit
un programme il faut le sauvegarder : on choisit par exemple save as et le nom du fichier qui doit
ncessairement avoir lextension .m : matlab reconnaitra par la suite cette extension lorsquon lui demandera
lexcution dans la fentre de commande. Par exemple pour excut le programme enregistr dans le fichier
premierspas.m il faudra frapper dans la fentre Command Window .
>> premierspas
Ici le fichier premiersepas.m est rang dans le dossier work de matlab. Voici le contenu du fichier
premierspas.m

8
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

En tapant la commande premierspas on excute le programme contenu dans le fichier


premierspas.m . La deuxime commande plot(t,x) trace la squence x en fonction de la squence t. Les
instructions donnes dans la fentre des commandes (command window) reconnaissent les noms des variables
donns dans le fichier du programme. Tout se passe comme si la squence dinstructions du programme tait
entre dans la fentre de commandes.

6.2 Les fonctions


Il est possible de dfinir ses propres fonctions. La premire mthode permet de dfinir des fonctions
simples sur une ligne de commande. La seconde, beaucoup plus gnrale permet de dfinir des fonctions trs
volues en la dfinissant dans un fichier.

6.2.1. Fonctions dfinies dans un fichier: Reprenons l'exemple prcdent (sincos). L'ordre des oprations est le
suivant :
diter un nouveau fichier appel sincos.m ; Taper les lignes suivantes :

function [ s ] = sincos( x ) >> sincos(pi/12)


s = sin(x)-x.*cos(x);
Sauvegardez ans =
Le rsultat est le mme que prcdemment : 0.0059

Remarque : Le nom du fichier doit porter l'extension .m et doit tre exactement le nom de la fonction
(apparaissant aprs le mot-cl function).

Exemple2 : On veut raliser une fonction appele cart2pol qui convertit des coordonnes cartsiennes (x , y)
(entres de la fonction) en coordonnes polaires (r,) (sorties de la fonction). Voil le contenu du fichier
cart2pol.m :
function [r, theta] = cart2pol (x, y) >>[r,theta] = cart2pol(1,1)
rr =
r = sqrt(x.^2 + y.^2); 1.4142
theta = atan (y./x); tt =
0.7854
Si la fonction est appele sans variable de sortie, c'est ans qui prend la valeur du rayon polaire :
>> cart2pol(1,1)
ans =
1.4142

6.3 Structures de contrle

6.3.1 Oprateurs de comparaison et logiques : MATLAB reprsente la constante logique "FAUX" par 0 et la
constante "VRAIE par 1. Les deux tableaux suivants comportent l'essentiel de ce qu'il faut savoir :

9
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

Quand on applique un oprateur de comparaison entre deux tableaux, ou entre un tableau et un scalaire,
l'oprateur est appliqu terme terme. Ainsi :
>> A=[1 4 ; 3 2]
A=
1 4
3 2
>> A>2
ans =
0 1
1 0
Les termes de A suprieur 2 donnent 1 (vrai), les autres 0 (faux).
Si on veut dfinir la fonction suivante :

On ajoute les deux expressions sinx et sin2x en les pondrant par la condition logique dfinissant leurs domaines
de validit.
function y = f (x)
>> x=-2*pi:2*pi/100:2*pi;
y = sin(x) .* (x>0) + sin(2*x) .* (x<0) >> plot(x,f(x))
>> grid

6.3.2 La commande find :


La commande find est utile pour extraire des lments d'un tableau selon un critre logique donn.
Exemple:

>> x = [ -1.2 0 3.1 6.2 -3.3 -2.1]


x=
-1.2000 0 3.1000 6.2000 -3.3000 -2.1000

>> inds = find(x < 0)


inds =
1 5 6
On peut ensuite facilement extraire le sous-tableau ne contenant que les lments ngatifs en crivant:

>> y = x(inds)
y=
-1.2000 -3.3000 -2.1000

6.3.3 Boucles for :


La syntaxe est la suivante :

for variable = valeur dbut:pas:valeur fin


instructions
end

10
Universit Abdelhamid Ibn Badis - Mostaganem
Facult des Sciences Exactes et dInformatique- Dpartement de Physique
2me anne Master : Physique des Matriaux.

Exemple1:

On peut aussi crire de manire non seulement condense mais aussi optimise pour acclrer les
calculs. Lutilisation (.* la place de *) et ainsi on effectuera le mme produit sur tous les couples dlments
ayant la mme position (le mme indice) dans les deux squences qui donnera le mme rsultat

6.3.4 Instructions conditionnelles if


if condition logique
instructions
elseif condition logique
instructions
...
else
instructions
end

Exemple:

>> test_de_y(-1)
ans =
negatif
>> test_de_y(1)
ans =
positif
>> test_de_y(0)
ans =
nul

6.3.5 Boucles while


while condition logique
instructions
end

Exemple:

Tant que le sinus est positif (>=0) la somme x=x+deltax est effectue.

11

Vous aimerez peut-être aussi