Vous êtes sur la page 1sur 75

S. EL HAJJI http://www.fsr.ac.ma/mia/elhajji.

ht m

MATLAB :
MAT

(rix) LAB (oratory) est un logiciel puissant dot la fois d'un langage de programmation haut niveau et d'outils ddis au calcul numrique et la visualisation numrique. Dvelopp en C par la socit Mathworks (http://www.mathworks.com/). Matlab tait initialement destin faire du calcul matriciel simplement.
S. ELHAJJI 2

Actuellement, Matlab recouvre d'autres domaines d'applications de l'informatique scientifique : visualisation graphique 2D et 3D rsolution d'quations aux drives partielles optimisation traitement du signal traitement de l'image logique floue rseaux de neurones
S. ELHAJJI 3

Les systme Matlab se divise en deux parties : 1) Le noyau Il comprend : l'environnement de travail offrant plusieurs facilits pour la manipulation des donnes. son interprteur permet de tester rapidement ses propres programmes Matlab. le systme graphique Matlab (interfaces hommemachine, graphiques, images, animations). le langage de programmation Matlab. une librairie de fonctions mathmatiques Matlab. un systme d'interfaage faciltant l'excution de programmes C ou Fortran ou sous Matlab. 2) Des Toolboxes (botes outils) Ils regroupent un ensemble de fonctions spcifiques un thme.
S. ELHAJJI 4

INSTRUCTION DE BASE

S. ELHAJJI

>>8/10 Entre ans = 0.8000 >>r = 8/10 Entre r= 0.8000 >>r r= Entre 0.8000

variable temporaire choisie par Matlab 4 dcimales par omission

variable choisie par lutilisateur

r conserve la dernire valeur calcule


S. ELHAJJI 6

valeur de r retenue >>s=10*r s= 8 >>v=sin(s) v= 0.9894 >>u=[0:.1:10]; >>z=sin(u); >>u(7) ans = 0.6000 Entre fonction dans Matlab Entre ; ne pas imprimer la rponse Entre Entre faire varier u de 0 10 par saut de 0.1

u est une variable indice dont on veut la 7ime S. ELHAJJI valeur

>>x=[0:.01:10]; >>y=sin(2*x); >>plot(x,y),xlabel(x),ylabel(sin(2x))


1 0 .8

0 .6

0 .4

0 .2 s in (2 x )

0 . 2

0 . 4

0 . 6

0 . 8

1 0 1 2 3 4 5 x S. ELHAJJI 6 7 8 9 10

Oprations de base Vecteurs Matrices

S. ELHAJJI

Oprateurs arithmtiques :
Symbole Opration exponentiation : ab multiplication : ab div. vers la droite : a/b div. vers la gauche : a/b addition : a + b soustraction : a b
S. ELHAJJI

Forme Matlab a^b a*b a/b b\a a+b a-b


10

^ * / \ + -

Variables spciales :
ans eps i, j Inf NaN pi variable temporaire contenant la rponse la plus rcente spcifie la prcision dun nombre en point flottant le nombre imaginaire (-1)1/2 linfini indique un rsultat numrique non dfini le nombre
S. ELHAJJI 11

Commandes pour la gestion dune session :


clc clear exist (nom) help nom lookfor nom quit who whos nettoie la fentre dite Command enlve les variables de la mmoire dtermine si un fichier existant ou une variable a le nom nom recherche en ligne pour le sujet nom recherche laide pour le mot-cl nom arrte Matlab numre les variables courantes en mmoire numre les variables actuelles et leur dimension S. ELHAJJI

12

Cration de vecteurs et de matrices


Vecteurs :
>>r = [2,4,10] r= 2.0000 >>s = [2 4 10] s= 2.0000 4.0000 10.0000 Sparateurs 4.0000 10.0000 Entre Entre Crochets carrs

vecteurs lignes
S. ELHAJJI 13

Vecteurs colonnes >>g = [3;7;9] g= 3 7 9 ou >>g = [3,7,9] g= 3 7 9 Entre Entre

Vecteurs (suite)

Sparateur pour les lignes

Transpose

S. ELHAJJI

14

Cration dune matrice : >>A = [2,4,10;16,3,7] A= 2 4 10 16 3 7 >>a = [1,3,5]; >>b = [7,9,11]; >>c = [a b] c= 1 3 5 >>D = [a;b] D= 1 3 5 7 9 11 Entre Sparateurs Entre Entre Entre 2 vecteurs spars par , ou un espace Entre 2 vecteurs lignes avec S. ELHAJJI sparateur de lignes

vecteur 7 9 11

15

Transpose dune matrice :


Matrice transpose : matrice dont on remplace les lignes par les colonnes

2 6 A= 3 5 T 2 3 A = 6 5
>>A= [-2,6;-3,5] A= -2 6 -3 5
S. ELHAJJI 16

apostrophe

Jeu des indices :


v(:) v(2:5) A(:, 3) A(:,2:5) A(2:3,1:3) tous les lments du vecteur v du 2e au 5e lment tous les lments de la 3e colonne tous les lments de la 2e la 5e colonne tous les lments dans la 2e et 3e ligne et qui sont aussi dans la 1re la 3e colonne limine les colonnes 1 et 4

A( [1 4] ) = [ ]

>>A= [6, 9, 4; 1, 5, 7]; >>A(1,5) = 3 Entre A= 6 9 4 0 ELHAJJI 3 S. 1 5 7 0 0

agrandissement remplissage avec 17 des 0

Commandes pour les vecteurs et matrices :


find(x)
Fournir une variable indice contenant les indices des lments non nuls de x

[u, v, w] = find (A) Fournir des variables indices contenant


les indices des lignes et colonnes des lments non nuls de la matrice A

length(A) max(A)

Fournir le nombre dlments de A si A est un vecteur ou la valeur max de m ou n si A est une matrice m x n Fournir llment ayant la valeur algbrique max si A est un vecteur ou un vecteur contenant llment max dans chaque colonne de la matrice A Mme dfinition que max(A) sauf que le stockage des valeurs max seffectue dans le vecteur ligne x et leurs indices dans le vecteur ligne k
S. ELHAJJI...

[x, k] = max(A)

suite la diapositive suivante

18

Commandes pour les vecteurs et matrices :


(... suite)

min(A) [x, k] = min(A) size(A) sort(A)

Mme signification sauf quil sagit des valeurs min

Fournir un vecteur ligne contenant les dimensions m x n de la variable indice A Classer chaque colonne de la variable indice A par ordre croissant des grandeurs et fournir une variable indice ayant les mmes dimensions que A Effectuer la somme des lments de chaque colonne de A et fournir le rsultat dans un vecteur ligne
(Fin)

sum(A)

S. ELHAJJI

19

Oprations lment par lment :


Dfinitions laide dun exemple : >>A = [6 , 3]; >>B = [4 , 8]; >>c = 2; >>d = 5 >>A + c ans 8 >>A d ans 1

addition dun scalaire

soustraction dun scalaire

-2
S. ELHAJJI

(... suite la diapositive suivante)

20

(... suite)

>>A + B ans 10 >>A B ans 2 >>A .* B ans 24 >>A ./ B ans 6/4

addition matricielle 11 soustraction matricielle -5

24

multiplication lment par lment

3/8

division par la droite


S. ELHAJJI

(... suite la diapositive suivante)

21

(... suite)

>>A .\ B ans 0.6667 >>A .^ c ans 36

2.6667

division par la gauche

exponentiation

(Fin)

S. ELHAJJI

22

Oprations matricielles (multiplication) :


Posons que A : matrice m x p B : matrice p x n Produit matriciel C = AB C = matrice m x n

IMPORTANT : Nombre de colonnes de A = nombre de lignes de B

(... suite la diapositive suivante)


S. ELHAJJI 23

(... suite)

Multiplication de 2 vecteurs : >>u = [1, 2]; >>v = [-2, -1]; >>w = u * v w= -4 1 x n par n x 1 vecteur colonne vecteur ligne scalaire produit scalaire ou produit intrieur

S. ELHAJJI

(... suite la diapositive suivante)

24

(... suite)

>>y = u * v y -2 -1 -4 -2

produit extrieur vecteur ligne 1 x n vecteur colonne n x 1

matrice n x n

(Fin)

S. ELHAJJI

25

Cration de matrices spciales :


Commande eye(n) eye(size(n)) ones(n) ones(m,n) ones(size(A)) zeros(n) zeros(m,n) zeros(size(A)) Description
Crer une matrice identit I n x n Crer une matrice I de mme dimension que A Crer une matrice n x n remplie de 1 Crer une matrice m x n remplie de 1 Crer une matrice remplie de 1 et de mme dimension que A Crer une matrice n x n remplie de 0 Mme signification quavec ones(m,n) et ones(size(A)) sauf 1 remplac par 0
S. ELHAJJI 26

Programmer sous MATLAB

S. ELHAJJI

27

Programmer sous MATLAB


Scripts et fonctions. Oprateurs de comparaison . Oprateurs logiques . Instructions de contrle .

Scripts et fonctions :
Un

script est un ensemble dinstruction MATLAB qui joue le rle de programme principal. Si le script est crit dans le fichier de nom nom.m on lexcute dans la fentre MATLAB en tapant aprs >> nom .

S. ELHAJJI

29

Scripts et fonctions

Function[vars1 ,,varsm] = fonc(vare1,varen)

Squence dinstructions

O : vars1 ,,varsm sont les variables de sortie de la fonction vare1,varen sont les variables dentre de la fonction Squence dinstructions est le corps de la fonction.
S. ELHAJJI 30

Scripts et fonctions

Il est impratif que la fonction ayant pour nom fonc soit enregistre dans un fichier de nom fonc.m sans quoi cette fonction ne sera pas visible par MATLAB.

S. ELHAJJI

31

Oprateurs de comparaison
2. 3. 4. 5. 6. 7.

Les oprateurs de comparaison sont : = = : gal (x= =y) > : stictement plus grand que (x>y) < : strictement plus petit que (x<y) >= : plus grand ou gal (x>=y) <= : plus petit ou gal (x<=y) ~ = : diffrent de (x~ =y)
S. ELHAJJI 32

Oprateurs logiques

Les oprateurs logiques sont : & : et (x & y) | : ou (x | y) ~ : non (~ x)

3. 4. 5.

S. ELHAJJI

33

Instructions de contrle
Boucle Boucle

FOR (parcours dun intervalle) WHILE (tant quefaire) conditionne IF

Linstruction Choix

ventil , linstruction switch

S. ELHAJJI

34

Boucle FOR
Syntaxe : for indice = borne_inf : borne_sup Squence dinstructions end O indice est une variable appele lindice de la boucle Borne_inf et borne_sup sont deux constantes On peut utiliser un incrment (pas) autre que 1. La syntaxe est alors Borne_inf : pas : borne_sup.

S. ELHAJJI 35

Boucle WHILE
Syntaxe

: while expression logique Squence dinstructions end expression logique est une expression dont le rsultat peut tre vrai ou faux squence dinstructions est le traitement effectuer tant que expression logique est vraie.
S. ELHAJJI

36

Linstruction conditionne IF

Syntaxe : if expression logique squence dinstructions end expression logique est une expression dont le rsultat peut tre vrai ou faux Il ny a pas de mot cl then
S. ELHAJJI 37

Linstruction conditionne IF
Syntaxe

: if expression logique squence dinstructions 1 else squence dinstructions 2 end

S. ELHAJJI

38

Linstruction conditionne IF
Il est possible deffectuer un choix en cascade : Syntaxe : if expression logique 1 squence dinstructions 1 elseif expression logique 2 squence dinstructions 2 elseif expression logique N squence dinstructions N else squence dinstructions par dfaut end

S. ELHAJJI 39

Linstruction switch
Syntaxe : switch var case cst1, squence dinstructions 1 case cst2, squence dinstructions 2 case cstN, squence dinstructions N otherwise squence dinstructions par dfaut end

S. ELHAJJI

40

Linstruction switch
var

est une variable numrique ou une variable chane de caractres cst1,,cstN, sont des constantes numrique ou des constantes chane de caractres squence dinstructions i est une squence dinstructions excuter si le contenu de la variable var est gal la constante csti (var= =csti).

S. ELHAJJI

41

Linstruction switch
Il

est possible de regrouper plusieurs cas si la squence dinstructions excuter est la mme pour ces diffrents cas. La syntaxe est alors : Case{ cst1,,cstN} Squence dinstructions commune

S. ELHAJJI

42

Graphisme
1. 2. 3.

Gestion des fentres graphiques Graphisme 2D Amliorer la lisibilit d'une figure

Gestion des fentres graphiques


Une

instruction graphique ouvre une fentre dans laquelle est affich le rsultat de cette commande. Par dfaut, une nouvelle instruction graphique sera affiche dans la mme fentre et crasera la figure prcdente. On peut ouvrir une nouvelle fentre graphique par la commande figure.
S. ELHAJJI 44

Gestion des fentres graphiques


Chaque

fentre se voit affecter un numro n. Ce numro est visible dans le bandeau de la fentre sous forme d'un titre. Le rsultat d'une instruction graphique est par dfaut affich dans la dernire fentre graphique ouverte On rend active une fentre graphique prcdemment ouverte en excutant la commande figure(n)
S. ELHAJJI 45

Gestion des fentres graphiques


La

commande close permet de fermer la fentre graphique active. On ferme une fentre graphique prcdemment ouverte en excutant la commande close(n) Il est galement possible de fermer toutes les fentres graphiques en tapant close all.

S. ELHAJJI

46

Graphisme 2D la commande fplot


>>fplot('nomf', [xmin , xmax]) o : nomf est le nom d'une fonction MATLAB incorpore, soit une expression dfinissant une fonction de la variable x, soit le nom d'une fonction utilisateur. [xmin , xmax] est l'intervalle pour lequel est trac le graphe de la fonction.
S. ELHAJJI 47

Graphisme 2D la commande fplot


>>fplot('sin',[-2*pi 2*pi])

Pour

tracer le graphe de la fonction h(x) = x sin(x) on peut dfinir la fonction utilisateur h dans le fichier h.m de la manire suivante :

S. ELHAJJI

48

Graphisme 2D la commande fplot


function

y=h(x) y=x.*sin(x); On obtient alors le graphe de la fonction h par l'instruction : >>fplot('h',[-2*pi 2*pi])

S. ELHAJJI

49

Graphisme 2D la commande fplot


L'autre

faon de procder est d'excuter l'instruction :

>>fplot(' x* sin(x) ',[-2*pi 2*pi])


Il

est possible de tracer plusieurs fonctions sur la mme figure:


S. ELHAJJI 50

Graphisme 2D la commande fplot


fplot('[nomf_1 , nomf_2 , nomf_3]', [xmin,xmax])
nomf_1

, nomf_2 , nomf_3 est le nom d'une fonction MATLAB incorpore, soit une expression dfinissant une fonction de la variable x, soit le nom d'une fonction utilisateur.

S. ELHAJJI

51

Graphisme 2D la commande fplot

Pour limiter le graphe aux ordonnes comprises entre les valeurs ymin et ymax on passera comme second argument de la commande fplot le tableau [xmin,xmax,ymin,ymax]. Une autre possibilit pour grer les bornes des valeurs en ordonnes est d'utiliser la commande axis aprs utilisation de la commande fplot. La syntaxe est axis([xmin, xmax, ymin, ymax]).

>> fplot('[sin(x)/x , cos(x)/x]', [-5, 5, -1, 1])


S. ELHAJJI 52

Graphisme 2D la commande plot


La

commande plot permet de tracer un ensemble de points de coordonnes (xi , yi), i=1,,N. La syntaxe est plot(x,y) o x est le vecteur contenant les valeurs xi en abscisse et y est le vecteur contenant les valeurs yi en ordonne.

S. ELHAJJI

53

Graphisme 2D la commande plot


Les

vecteurs x et y doivent tre de mme dimension mais il peut s'agir de vecteurs lignes ou colonnes. Par dfaut, les points (xi , yi) sont relis entre eux par des segments de droites.

S. ELHAJJI

54

Graphisme 2D la commande plot


Pour

tracer le graphe de la fonction h(x)=x sin(x) >> x=[-2*pi:0.01:2*pi]; y = x.*sin(x); >> plot(x,y) >> x=[-2*pi:1:2*pi]; y = x.*sin(x); >> plot(x,y)
S. ELHAJJI 55

Graphisme 2D la commande plot


On

peut spcifier la couleur d'une courbe, le style de trait et/ou le symbole chaque point (xi , yi). On donne un troisime paramtre d'entre la commande plot qui est une chane de 3 caractres de la forme 'cst' :

c dsignant la couleur du trait s le symbole du point t le type de trait.


S. ELHAJJI 56

Graphisme 2D la commande plot


y

-jaune . point - trait plein m magenta o cercle : pointill court c cyan x marque x - pointill long r rouge + plus -. pointill mixte g vert * toile < triangle (gauche) b bleu s carr > triangle (droit) w blanc d losange p pentagone k Noir v triangle (bas) ^ triangle (haut)
S. ELHAJJI

57

Graphisme 2D la commande plot


Les

valeurs par dfaut sont c = b, s = . et t = ce qui correspond :


Un trait plein Bleu

Il n'est pas obligatoire de spcifier chacun des trois caractres La commande grid permet d'obtenir un quadrillage de la figure

S. ELHAJJI 58

Graphisme 2D la commande plot


Il

est possible de tracer plusieurs courbes sur la mme figure en spcifiant plusieurs tableaux x1, y1, x2, y2, ..., comme paramtres de la commande plot. Si l'on souhaite que les courbes aient une apparence diffrente, on utilisera des options de couleurs et/ou de styles de traits distincts aprs chaque couple de vecteurs x, y.

S. ELHAJJI

59

Graphisme 2D la commande plot

On trace sur l'intervalle [-5, 5] la fonction x cos(x) en trait plein bleu et la fonction x cos(x) en trait pointill rouge.

>> x = [-5:0.01:5]; >> y = x.^2.*cos(x); z = x.*cos(x); >> plot(x,y,'b-',x,z,'r:');

S. ELHAJJI

60

Graphisme 2D la commande loglog


la commande loglog(x,y) permet d'afficher le vecteur log(x) contre le vecteur log(y). La commande loglog s'utilise de la mme manire que la commande plot. >> x = [1:10:1000]; y = x.^3; >> loglog(x,y) Semologx = graphisme avec chelle log sur laxe des x seul Semology = graphisme avec chelle log sur laxe des y seul

S. ELHAJJI

61

Amliorer la lisibilit d'une figure Maquillage (habillage, lgendes) dune figure :


La

commande xlabel permet de mettre un texte en lgende sous l'axe des abscisses. >>xlabel(' lgende ') La commande ylabel fait de mme pour l'axe des ordonnes. La commande title permet de donner un titre la figure. >> title('le titre')

S. ELHAJJI

62

Amliorer la lisibilit d'une figure


On

peut crire un texte donn une position prcise sur la figure grce la commande text. text(posx , posy,' un texte ') posx et posy sont les coordonnes du point. La commande gtext permet quant elle de placer le texte une position choisie sur la figure l'aide de la souris. gtext('un texte ')
S. ELHAJJI 63

Amliorer la lisibilit d'une figure


>> P = 5; >> t = [0:.01:2]; >> c = 12*exp(-2*t) - 8*exp(-6*t); >> plot(t,c); grid >> xlabel('temps en minutes') >> ylabel('concentation en gramme par litre') >> title(['evolution de la concentration du produit ', num2str(P), ... ' au cours du temps ']) >> gtext('concentration maximale')
S. ELHAJJI 64

Afficher plusieurs courbes dans une mme fentre


la

commande hold on permet d'afficher plusieurs courbes dans une mme fentre Pour rtablir la situation antrieure (le rsultat d'une nouvelle instruction graphique remplace dans la fentre graphique le dessin prcdent) on tapera hold off.

S. ELHAJJI

65

Afficher plusieurs courbes dans une mme fentre


>> e = exp(1); >> figure >> hold on >> fplot('exp',[-1 1]) >> fplot('log',[1/e e]) >> plot([-1:0.01:e],[-1:0.01:e]) >> grid >> hold off
S. ELHAJJI

66

Afficher plusieurs courbes dans une mme fentre


la

commande subplot. dcompose une fentre en sous-fentres et d'afficher une figure diffrente sur chacune de ces sous-fentres >>subplot(m , n , i) o m est le nombre de sous-fentres verticalement n est le nombre de sous-fentres horizontalement; i sert spcifier dans quelle sous-fentre doit s'effectuer l'affichage.
S. ELHAJJI 67

Afficher plusieurs courbes dans une mme fentre


>> figure >> subplot(2,3,1), fplot('cos',[0 4*pi]), title('cosinus'), grid >> subplot(2,3,2), fplot('sin',[0 4*pi]), title('sinus'), grid >> subplot(2,3,3), fplot('tan',[-pi/3 pi/3]), title('tangente'), grid >> subplot(2,3,4), fplot('acos',[-1 1]), title('arccosinus'), grid >> subplot(2,3,5), fplot('asin',[-1 1]), title('arc-sinus'), grid >> subplot(2,3,6), fplot('atan',[-sqrt(3) sqrt(3)]), title('arc-tangente'), grid
S. ELHAJJI 68

Sauvegarder une figure


La commande print permet de sauvegarder la figure d'une fentre graphique dans un fichier sous divers formats d'images. >>print f<num> -d<format> <nomfic> <num> dsigne le numro de la fentre graphique. <nomfic> est le nom du fichier dans lequel est sauvegarde la figure. <format> est le format de sauvegarde de la figure. Ces formats sont nombreux. On pourra obtenir la liste complte en tapant help plot.

S. ELHAJJI 69

Sauvegarder une figure


ps

: PostScript noir et blanc psc : PostScript couleur eps : PostScript Encapsul noir et blanc epsc : PostScript Encapsul couleur jpeg : Format dimage JPEG tiff : Format dimage TIFF

S. ELHAJJI

70

Les entres sorties

S. ELHAJJI

71

Les formats d'affichage des rels


format

long : format long 15 chiffres.

format

short e : format court 5 chiffres avec notation en virgule flottante. long e:format long 15 chiffres avec notation en virgule flottante.

format

S. ELHAJJI

72

Les formats d'affichage des rels


>> pi ans = 3. 1416 >> f or mat long> > pi >> for mat short e >> pi ^3 >> f or mat short g >> pi ^3 >> f or mat short
S. ELHAJJI 73

Lecture

La commande input permet de demander l'utilisateur d'un programme de fournir des donnes. Une phrase est affiche et MATLAB attend que l'utilisateur saisisse une donne au clavier. Cette donne peut tre une valeur numrique ou une instruction MATLAB. Un retour chariot provoque la fin de la saisie. Une valeur numrique est directement affecte la variable var Une instruction MATLAB est value et le rsultat est affect la variable var.

>>var = input(' une phrase ')


S. ELHAJJI

74

Lecture

>>var = input('\n une phrase : \n ')


Il est possible de provoquer des sauts de ligne pour arer le prsentation en utilisant le symbole \n Pensez mettre un point virgule (;) la fin de l'instruction si vous ne souhaitez pas voir s'afficher var = . Pour saisir une rponse de type chane de caractres

>>var = input(' une phrase ','s')

Signalons qu'un retour chariot (sans autre chose) initialise la variable var au tableau vide

rep = input(' Affichage du resultat ? o/n [o] ','s'); if isempty(rep), rep = 'o'; end if rep == 'o' | rep == 'y' disp(['Le resultat vaut ', num2str(res)]) end
S. ELHAJJI 75

Vous aimerez peut-être aussi