Académique Documents
Professionnel Documents
Culture Documents
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
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
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
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
^ * / \ + -
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
12
vecteurs lignes
S. ELHAJJI 13
Vecteurs (suite)
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
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
A( [1 4] ) = [ ]
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)
18
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
-2
S. ELHAJJI
20
(... suite)
24
3/8
21
(... suite)
2.6667
exponentiation
(Fin)
S. ELHAJJI
22
(... 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
24
(... suite)
>>y = u * v y -2 -1 -4 -2
matrice n x n
(Fin)
S. ELHAJJI
25
S. ELHAJJI
27
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
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
3. 4. 5.
S. ELHAJJI
33
Instructions de contrle
Boucle Boucle
Linstruction Choix
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
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.
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
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
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
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
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
, 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
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]).
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
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
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
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' :
-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
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
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
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.
S. ELHAJJI
60
S. ELHAJJI
61
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
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
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
66
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
S. ELHAJJI 69
: 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
S. ELHAJJI
71
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
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.
S. ELHAJJI
74
Lecture
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
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