Xavier Louchart
Gnralits
Session Matlab - Introduction
Dbut de session : aprs avoir lanc Matlab (icne / ou matlab sous Unix) >> est le prompt Matlab, la suite duquel vous entrerez les commandes Chaque commande entre et valide (Enter) donne l'cran le rsultat et le droulement des calculs intermdiaires. Pour ne pas afficher le rsultat l'cran et le dfilement des lignes, terminez chacune de vos commandes par ;
Le premier cran de Matlab prsente quelques commandes : programme de dmonstration donnant une prsentation des fonctionnalits de base de Matlab ouvre une fentre Windows d'aide pour les fonctions Matlab ouvre documentation hypertexte Matlab dans votre Web browser prfr
Mais aussi : intro : lance une introduction Matlab info : informations sur les boites outils (Toolboxes) disponibles, Mathworks et divers Sortie de Matlab fin de session exit ou quit
No flops (fonction flops) : donne le nombre d'oprations effectues en calcul flottant
Vous pouvez enregistrer les commandes tapes et les rsultats affichs lors d'une session Matlab dans un fichier texte avec la commande diary.
diary nom_fichier puis diary ou diary off pour terminer.
produit une liste des fonctions Matlab par catgories, pour chacun des rpertoires Matlab et des Toolbox installes, ainsi que vos propres rpertoires s'ils contiennent une fichier "Table of Contents" help <fonction ou commande> : fournit directement l'aide sur l'utilisation de la fonction ou de la commande indique Exemple :
help demo DEMO Run demonstrations. Type "demo" at the command line to browse available demos. With the optional action argument demo ('matlab'|'toolbox'|'simulink'|'blockset'|'stateflow'), DEMO opens the demo screen to the specified subtopic. With the optional categoryArg argument, DEMO opens to the specified toolbox or category, e.g. demo toolbox signal demo matlab language
Xavier Louchart
17/04/01
fournit la liste des fonctions et commandes contenant le mot-cl spcifi dans la premire ligne de leur texte d'aide Exemple :
lookfor Newton NLINFIT Nonlinear least-squares data fitting by the Gauss-Newton method.
L'espace de travail
La session Matlab dmarre dans le rpertoire indique par dfaut dans les proprits du programme Matlab ("dmarrer dans"). Les commandes de dplacement dans l'arborescence des rpertoires et l'information sur les fichiers sont accessibles directement avec les commnades Dos et Unix classiques
pwd : donne le rpertoire de travail dans lequel vous tes cd .. ou cd <directory> : changement de rpertoire dir ou ls : liste des sous-rpertoires et fichiers ! <path\fic.exe> : lance n'importe quel excutable Dos ou Windows path : donne la liste de tous les rpertoires auxquels Matlab accs soit pour les programmes et
commnandes, soit pour les fichiers de donnes Modifications du path : Un menu spcial est prvu pour cela : File\Set Path Ceci vous permet de grer vos rpertoires (ajouter, supprimer).
Xavier Louchart
17/04/01
Bytes 16 2
Gestion des donnes dans l'espace de travail Deux fonctions essentielles retenir : whos : donne l'information sur toutes les variables actuellement en mmoire, leur type, leur dimension clear : suppression d'une ou de toutes les variables actuellement en mmoire dans l'espace de travail
Les noms des variables et des fonctions sont sont composs de lettres et de chiffres, mais seuls les 19 premiers caractres sont significatifs. Ainsi, les noms mavariabledematrice et mavariabledematricecorrigee dsignent la mme variable. ATTENTION : Matlab fait la distinction entre les minuscules et les majuscules. Aux et AUX sont donc deux variables diffrentes. Quant aux structures des donnes, l'organisation par dfaut et la plus frquemment utilise est la matrice. Mais il en existe d'autres. Notamment : - tableau multi-dimensionnel (3D, 4D, nD) - structure utilisateur - cellule "non scalaire" - tableau multi-dimensionnel de structures - tableau multi-dimensionnel de cellules - objet (au sens programmation) - ensemble
Le mode interactif
Dans le mode interactif, Matlab peut tre utilis comme une "super-puissante calcultrice" scientifique, avec les oprateurs arithmtiques classiques et l'ensemble des fonctions de calcul numrique et de visualisation graphique. La syntaxe des commandes est la suivante : <expression mathmatique> fonction([liste d'arguments]) Exemples :
4+5 log(x)>y^2 x' plot(x,min(y(:,1),z(:,2)))
L'affichage des variables et des rsultats est automatique en fin de traitement. Il peut tre annul par ; en fin de ligne. Le ; est d'ailleurs vivement conseill dans la programmation, afin d'viter le dfilement l'cran des rsultats de toutes les lignes composant votre code. La cration d'objet se fait par affectation d'un rsultat de traitement : = Exemple x = 2+4.3 Si aucune affectation une variable n'est effectu, le rsultat est stock par dfaut dans la variable pr-dfinie ans Une affectation multiple se fait avec [ ] ATTENTION : l'ancienne valeur est systmatiquement crase. Xavier Louchart 3 17/04/01
ISNAN True for Not-a-Number. ISNAN(X) returns an array that contains 1's where the elements of X are NaN's and 0's where they are not. For example, ISNAN([pi NaN Inf -Inf]) is [0 1 0 0]. See also ISFINITE, ISINF. INF Infinity. INF returns the IEEE arithmetic representation for positive infinity. Infinity is also produced by operations like dividing by zero, eg. 1.0/0.0, or from overflow, eg. exp(1000). See also NaN, ISFINITE, ISINF.
ISINF True for infinite elements. ISINF(X) returns an array that contains 1's where the elements of X are +Inf or -Inf and 0's where they are not. For example, ISINF([pi NaN Inf -Inf]) is [0 0 1 1]. See also ISFINITE, ISNAN.
ISFINITE True for finite elements. ISFINITE(X) returns an array that contains 1's where the elements of X are finite and 0's where they are not. For example, ISFINITE([pi NaN Inf -Inf]) is [1 0 0 0]. For any X, exactly one of ISFINITE(X), ISINF(X), or ISNAN(X) is 1 for each element. See also ISNAN, ISINF.
Xavier Louchart
17/04/01
Oprations arithmtiques
Les oprations arithmtiques de base dans Matlab sont : + plus - Plus - minus - Minus * mtimes - Matrix multiply .* times - Array multiply ^ mpower - Matrix power .^ power - Array power \ mldivide - Backslash or left matrix divide / mrdivide - Slash or right matrix divide .\ ldivide - Left array divide ./ rdivide - Right array divide Les oprations peuvent tre enchanes en respectant les priorits usuelles des oprations et en utilisant des paranthses. Dans l'ordre des priorits :
1. () 2. ^, .^ 3. moins unaire 4. a:b , a:pas:b (squence) 5. *, .*, /, ./, \, .\ 6. +, - addition, soustraction scalaire ou matricielle
Oprateurs relationnels eq - Equal ne - Not equal lt - Less than gt - Greater than le - Less than or equal ge - Greater than or equal
Oprateurs logiques & and - Logical AND | or - Logical OR ~ not - Logical NOT xor - Logical EXCLUSIVE OR any - True if any element of vector is nonzero all - True if all elements of vector are nonzero
Formation Matlab - " prise en main rapide" BackSpace Suppr Esc Dbut, Fin aller vers la gauche sur la ligne de commande aller vers la droite sur la ligne de commande effacer le caractre gauche du curseur effacer le caractre droite du curseur effacer la ligne de commande se positionner au dbut ou la fin de la ligne de commande
En tapant quelques caractres suivis de la touche , la dernire commande commenant par ces caractres est alors rappele sur la ligne de commande.
Xavier Louchart
17/04/01
2 5
La fonction length donne la longueur d'un vecteur ou d'une matrice, c'est dire max(size(x)).
suppression :
A(condition) = []
insertion : de la matrice Mat2 la ligne i : [A(1:i,:) ; Mat2 ; A(i+1:size(x,1),:)] de la matrice Mat2 la colonne j : [A(:,1:j) ; Mat2 ; A(:,j+1:size(x,2))]
Xavier Louchart
17/04/01
Fonctions de base
Matrices lmentaires Zeros array. Ones array. Identity matrix. Replicate and tile array. Uniformly distributed random numbers. Normally distributed random numbers. Linearly spaced vector. Logarithmically spaced vector. X and Y arrays for 3-D plots. Regularly spaced vector and index into matrix.
Information basique sur les matrices size Size of matrix. length Length of vector. ndims Number of dimensions. disp Display matrix or text. isempty True for empty matrix. isequal True if arrays are identical. isnumeric True for numeric arrays. islogical True for logical array. logical Convert numeric values to logical. Manipulation des matrices Transpose matrix Change size. Diagonal matrices and diagonals of matrix. Extract lower triangular part. Extract upper triangular part. Flip matrix in left/right direction. Flip matrix in up/down direction. Flip matrix along specified dimension. Rotate matrix 90 degrees. Regularly spaced vector and index into matrix. Find indices of nonzero elements. Last index. Linear index from multiple subscripts. Multiple subscripts from linear index.
' reshape diag tril triu fliplr flipud flipdim rot90 : find end sub2ind ind2sub
Les matrices logiques sont des matrices dont les lments prennent pour valeur 1 (vrai) ou 0 (faux). Ces matrices sont le rsultat de fonctions logiques telles que : isnan, islogical, all, any Elles peuvent galement servir de matrice d'indices lors d'une affectation, notamment en se servant de la fonction find.
Exemple
x=[10 9 8 -1 7 6 -1 5 4 3]; i=find(x>=0) x_positif=x(i) i =
Xavier Louchart
17/04/01
Xavier Louchart
17/04/01
Entres / Sorties
L'objectif ici est de lire un fichier o sont stocks des donnes et d'crire un fichier pour sauvegarder des donnes ou pouvoir changer des fichiers avec d'autres logiciels. Il existe 2 types de fichier principalement : - les fichiers binaires : 2 formes * binaire Matlab (extension par dfaut .mat), reconnu par Matlab sur toutes les plateformes (PC, linux, Unix, Mac) * "vrai" binaire, dpendant du type de processeur. Ce cas n'est pas abord dans cette section. - les fichiers cods en caratres ASCII, ditables avec n'importe quel diteur (Dos, Ultraedit, Bloc notes Windows, Word en mode texte, Editeur Matlab (commande edit)) Deux fichiers exemples sont utiliss dans cette section : Fichier binaire Matlab (.mat) : data1.mat Fichier ASCII (.txt) : data1.txt
Pour un fichier ASCII, la syntaxe est la suivante : load 'data1.txt', le nom du fichier doit tre spcifi comme une chane de caractres. Par dfaut, la variable cre par Matlab qui contient les donnes lues dans ce fichier est le nom du fichier sans l'extension. Exemple :
load 'data1.txt' whos Name Size data1 14x2 Bytes 224 Class double array
L'avantage des fichiers binaires Matlab est le stockage des noms de variables, et la possibilt de stocker plusieurs variables de types diffrents. Le principal inconvnient est que vous ne pouvez ni diter ces fichiers pour les modifier ou voir ce qu'ils contiennent, ni les utiliser avec d'autres logiciels. En revanche, avec les fichiers ASCII, vous pouvez diter leur contenu, rajouter des commentaires transparents pour la lecture dans Matlab (tout commentaire commence par un %), et utiliser ces fichiers avec d'autres logiciels. Pour exemple, diter le fichier data1.txt. La fonction load avec les fichiers ASCII ncessite que chaque donnes du fichier soient spares par un/plusieurs espace(s) ou tabulation(s). Lorsque les donnes sont spares par une ponctuation autre (, ; :), c'est la fonction fscanf qui doit tre utilise, mais elle est plus complexe d'utilisation et plus lente en lecture ! Xavier Louchart 10 17/04/01
Pour crire des donnes ou variables dans un fichier ASCII format, une succession de 3 commandes est utilise :
fopen, fprintf, fclose
Exemple : criture des des doones de la matrice data1 dans le fichier essai_ecriture.txt. On spare ici les 2 colonnes de la matrice par une tabulation, la premire colonne est formate en entier, la seconde en rel avec une dcimale.
fic=fopen('essai_ecriture.txt','w'); fprintf(fic,'%i\t%3.1f\n', data1'); fclose(fic) ou fclose('all')
Notez que l'on crit la transpose de data1 (data1'). En effet, Matlab lit les donnes en colonne et non en ligne, de mme qu'il numrote les indices d'une matrice en partant de la premire colonne, puis les suivantes. Quant au format d'criture, c'est une chane de caractres (' ') contenant les spcifications de conversion du langage C. Le type donnes doit commencer par un %, puis (pour les formats les plus frquents) i integer f rel, prcd eventuellement du nombre de chiffres et de dcimales : exemple 6.3f c caractre s chane de caractres Les format spcifiques sont les suivants : \n ligne suivante \r retour charriot \t tabulation \b backspace \f formfeed character Pour obtenir une backslash tapez \\ et un % tapez %%.
Xavier Louchart
11
17/04/01
Graphiques
De nombreux styles de graphiques sont disponibles sous Matlab, 2-D et 3-D. Pour une liste complte, consulter l'aide graph2D, graph3D et specgraph. Voici les plus courants :
plot, loglog, semilogx, semilogy, plotyy (2 axes y gauche et droite), plot3, mesh, surf, area, bar, errorbar, hist, pareto, pie, stairs, contour et bien d'autres.
L'objectif de cette section est de crer un graphique document et de modifier les diffrents objets composant le graphique. Pour cela, la fonction plot sera utilise. A noter que les lments prsents ici sont valables pour les versions 5.2, 5.3 et 6 de Matlab. Avec les versions 5.3 et 6, des botes de dialogues avec de nombreux paramtres et options facilitent la mise n forme des graphiques. Toutefois, il est quand mme bon de connatre ce qui est prsent par la suite pour crer des graphiques personnaliss sous forme de fonction ou de programme !
10
15
20
25
30
Rajoutons quelques lments tels que titre, label de l'axe x, et une grille
xlabel('Temps en minutes depuis le dbut de la crue') ylabel('Dbit (L/s)') title('Exemple de fichier plot') grid on
Xavier Louchart
12
17/04/01
3 D 2 1 0 0
25
30
Apparemment, il y a quelques petits problmes lis l'utilisation de Notebook et Word7 !!! Les principales fonctions permettant le contrle des axes et du graphiques sont :
axis - Control axis scaling and appearance. zoom - Zoom in and out on a 2-D plot. grid - Grid lines. box - Axis box. hold - Hold current graph. axes - Create axes in arbitrary positions. subplot - Create axes in tiled positions. xlim - X limits. ylim - Y limits.
Les fonctions d'annotations du graphique sont : legend - Graph legend. title - Graph title. xlabel - X-axis label. ylabel - Y-axis label. text - Text annotation. gtext - Place text with mouse. plotedit - Experimental graph editing and annotation tools. Concernant l'impression des graphiques (impression via imprimantes ou dans un fichier) : print - Print graph or SIMULINK system; or save graph to M-file. printopt - Printer defaults. orient - Set paper orientation.
Xavier Louchart
13
17/04/01
Formation Matlab - " prise en main rapide" Pour certaines fonctions graphiques (comme plot), le style de courbe, la couleur et le type de symbole peuvent tre prciss directement comme paramtre (cf. la commande utilise prcdemment '-ob'). Les trois paramtres (couleur, marker et style de courbe) sont paramtrs chacun par un caractre comme suit :
marker . point o circle x x-mark + plus * star s square d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram
Xavier Louchart
14
17/04/01
0 1 25 20 15 10 5 0 0 5 10 15 2 3 4 5 6
0 0 6 10 20 30
10
20
Accs aux objets graphiques et modifications de leurs proprits Principes et commandes de base
L'organisation des objets sous Matlab respecte la hirarchie suivante :
Root
Figure
Uicontrol
Axes
Menu
Image
Line
Patch
Surface
Text
Light
Les figures (fentre o sont affiches les graphiques ou images), les graphiques, les objets composant le graphique (axes, courbes, lgende ) sont des objets possdant de nombreuses proprits (appel handle). Ils hritent des proprits de leurs "parents", selon l'organigramme hirarchique prcdent. Afin de pouvoir les modifier (couleur, position, taille, police, format, ) il faut au pralable rcuprer ces "handle" dans une variable quelconque. Exemple (en reprenant la commande prcdente) :
h=plot(Debit(:,1),Debit(:,2),'-ob')
Deux fonctions indispensables permetent alors de grer ces handle : get : lire les paramtres graphiques set : modifier ces paramtres Pour lister les diffrentes proprits du graphique plot (dsormais variable h), utilisez la fonction get : Xavier Louchart 15 17/04/01
Pour lister les diffrentes options modifiables d'une des proprits, utilisez la commande set :
set(h) Color EraseMode: [ {normal} | background | xor | none ] LineStyle: [ {-} | -- | : | -. | none ] LineWidth Marker: [ + | o | * | . | x | square | diamond | v | ^ | > | < | pentagram | hexagram | {none} ] MarkerSize MarkerEdgeColor: [ none | {auto} ] -or- a ColorSpec. MarkerFaceColor: [ {none} | auto ] -or- a ColorSpec. XData YData ZData ButtonDownFcn Children Clipping: [ {on} | off ] CreateFcn DeleteFcn BusyAction: [ {queue} | cancel ] HandleVisibility: [ {on} | callback | off ] HitTest: [ {on} | off ] Interruptible: [ {on} | off ] Parent Selected: [ on | off ] SelectionHighlight: [ {on} | off ] Tag
Xavier Louchart
16
17/04/01
Afin de modifier une des proprits, il suffit d'utiliser la mme commande set, mais en spcifiant la proprit que vous souhaitez changer (sous forme de chane de caractres, ainsi que sa nouvelle valeur). Exemple : changement du style de marker : x la place d'un o
set(h,'Marker','x')
changement de la couleur :
set(h,'Color',[1 0 0]) % composante R V B entre 0 et 1
Bien videmment, vous pouvez combiner plusieurs changements de proprits avec une seule commande set. Il suffit de sparer chaque couple ("nom_proprit" " valeur") par une virgule. Ceci donne par exemple :
set(h,'Marker','x', 'Color',[1 0 0], 'LineStyle',':')
A noter que certaines variables sont pr-dfinies, telles que les proprits des acex, des figures ou des objets prsents dans une figure :
gca gcf gco : GetCurrentAxes : donne le handle des axes actuels : GetCurrentFigure : donne le handle de la figure actuelle : GetCurrentObject : donne le handle de l'objet actuellement slectionn sur la figure
Xavier Louchart
17/04/01
Formation Matlab - " prise en main rapide" il suffit tout simplement d'utiliser la fonction set avec les diffrentes proprits que l'on souhaite modifier. Exemple :
set(gca, 'XaxisLocation', 'top', 'Xtick', [0 5 1 0 15 20], 'XtickLabel', ['0|5|10|15|20'], 'Xlim',[-1 21], 'Xdir','reverse')
Notez dans l'exemple prcdent que chaque ligne se termine par 3 points, ce qui signifie que l'on continue la ligne suivante. Ceci est assez pratique dans les programmes et rend plus lisible les numrations longues de proprits ou d'affectation.
: : : : : : :
noir ('k') blanc ('w') rouge ('r') vert ('g') bleu ('b') gris sombre gris bleut
Quelques tables prdfinies (colormap) : gray, hot, hsv, cool, bone, copper Visualisation du colormap : colorbar Modification de la couleur : Exemple : couleur de fond de la figure en noir :
set(gcf,'Color',[0 0 0]) ou set(gcf,'Color','k')
Xavier Louchart
18
17/04/01
Xavier Louchart
19
17/04/01