Formation Matlab, tutoriel & guide de travaux pratiques en pdf.
La ligne de commande Matlab
Celle-ci vous permet d’entrer vos commandes. Rappelons que Matlab est sensible à la casse. Les commandes d’édition sont simples :
Flêche haut vous permet de récupérer les commandes précédentes
Flêche bas vous permet de redescendre dans l’historique des commandes
Flêche gauche, Flêche droite, backspace et delete vous permettent de modifier la ligne de texte courante
Toute commande entrée sur la ligne de commande donne lieu à l’affichage de son résultat à moins qu’elle ne se termine par un point virgule, auquel cas l’affichage est supprimé.
Il est possible de saisir une commande sur plusieurs lignes, à condition d’utiliser 3 points (…) comme caractères de suite. Par exemple :
» 1/2 + 1/3 + 1/4 … + 1/5 + 1/6
ans = 1.4500 »
Lorsque vous tapez une expression simple sur la ligne de commande, le résultat de celle-ci est automatiquement affecté à la variable prédéfinie ans.
De manière générale, une ligne de commande Matlab est de la forme :
variable(s) = expression
où expression est une commande Matlab quelconque.
Par exemple :
» x=0.5 x = 0.5000 » y=cos(1-x^2) y = 0.7317
» v=[x y] v = 0.5000 0.7317 «
Si les deux premiers cas se passent de commentaire, le troisième montre comment générer un 2-vecteur en concaténant les variables x et y à l’aide de l’opérateur [ ]. Notez que le caractère de séparation des éléments à l’intérieur d’un vecteur est l’espace. Nous reviendrons en détail sur les tableaux car ils constituent l’élément fondamental de Matlab.
Introduction à Matlab ISIMA-F4 6
Outils à usage général
Variables et constantes prédéfinies
Matlab met à disposition de l’utilisateur quelques variables et constantes prédéfinies.
Inf dénote ∞. C’est le résultat produit par une opération du style 1 / 0. Par exemple :
« 1/0 Warning: Divide by zero ans = Inf «
NaN (Not a Number) est le résultat typiquement renvoyé par 0/0 ou ∞/∞. Par exemple :
« 0/0 Warning: Divide by zero ans = NaN «
pi quotient du périmètre d’un cercle par son diamètre (qui l’eut cru ?) et dont la valeur vaut approximativement π.
i et j bases de l’espace complexe. Au cas où, par inadvertance malheureuse, vous définiriez des variables de même nom, il est toujours possible d’accéder à celles ci en utilisant ii et jj.
Contrôle de la précision des calculs
La tolérance du « zéro machine », est fixée par la variable standard eps. C’est-à-dire que pour certaines opérations telles que la recherche des valeurs singulières d’une matrice, par exemple, les nombres x tels que : -eps < x < eps seront considérés comme nuls.
En modifiant cette borne, vous pouvez renforcer ou abaisser la sévérité des tests de nullité. La valeur standard vaut :
« eps eps = 2.2204e-016 «
Contrôle du format d’affichage des nombres
La commande format permet d’influer sur le format d’affichage des nombres dans Matlab.
Introduction à Matlab ISIMA-F4 7
L’invocation de help format renvoie la liste des formats utilisables. Il est possible de spécifier l’utilisation de formats en virgule fixe, en notation scientifique, héxadécimale, ainsi qu’un format spécial destiné à représenter les matrices de façon très condensée une matrice. L’exemple suivant permettra de fixer les esprits :
« a = [ -1 2 -1 ; 1 0 -1 ; … -1 -1 1] a = -1 2 -1 1 0 -1 -1 -1 1
« format + « a a = -++ –+ «
La matrice a est d’abord affichée en format normal avant que l’on utilise la commande format +. L’affichage utilise alors le formalisme suivant :
Un espace code une valeur nulle
Le caractère + code une valeur positive
Le caractère – code une valeur négative
Ce formalisme (qui doit ensuite être désactivé avec une autre commande format) est particulièrement intéressant lorsque l’on souhaite visionner l’allure d’une grande matrice de valeurs centrées, c’est-à-dire, principalement, en analyse de données.
La figure suivante montre le résultat de l’invocation de help format.
« help format
FORMAT Set output format. All computations in MATLAB are done in double precision. FORMAT may be used to switch between different output display formats as follows: FORMAT Default. Same as SHORT. FORMAT SHORT Scaled fixed point format with 5 digits. FORMAT LONG Scaled fixed point format with 15 digits. FORMAT SHORT E Floating point format with 5 digits. FORMAT LONG E Floating point format with 15 digits. FORMAT HEX Hexadecimal format. FORMAT + The symbols +, – and blank are printed for positive, negative and zero elements. Imaginary parts are ignored. FORMAT BANK Fixed format for dollars and cents. FORMAT COMPACT Suppress extra line-feeds. FORMAT LOOSE Puts the extra line-feeds back in. FORMAT RAT Approximation by ratio of small integers. «
La gestion de l’espace de travail
La notion d’espace de travail est fondamentale en Matlab. La fenêtre de commandes de Matlab est un exemple d’espace de travail. Celui-ci est déterminé par l’ensemble des variables et des fonctions présentes en mémoire. C’est une notion assimilable à celle d’espace de visibilité (scope) dans les langages de programmation modernes.
Lorsque vous demandez l’exécution d’un fichier .m, ce dernier invoque un nouvel espace de travail vierge (à l’exception des variables globales dont nous reparlerons plus tard) qu’il remplit avec ses variables propres. Lorsque son exécution se termine, son espace de travail meurt avec lui. Ainsi, chaque fichier .m contient son propre espace de nommage. Il n’y a donc aucun danger à utiliser des noms courants pour les variables locales.
Gestion de la mémoire
Matlab fournit des primitives permettant de gérer la mémoire occupée par un utilisateur :
Affichage de la liste des variables en mémoire
Suppression de variables, fonctions, etc … présentes en mémoire
Affichage de l’espace mémoire occupé
La commande who permet de connaître à un instant donné la liste des variables utilisateur. Par exemple :
« whoYour variables are:a v x y
«Cette liste est utile lorsque l’on souhaite connaître la liste des identificateurs utilisés (par exemple, au moment de créer une nouvelle variable). Toutefois, les informations proposées sont trop limitées pour permettre de gérer la mémoire du système. Dans ce cas, on préférera la commande whos dont nous donnons immédiatement un exemple :
« whosName Size Elements Bytes Density Complex
a 3 by 3 9 72 Full No v 1 by 2 2 16 Full No x 1 by 1 1 8 Full No y 1 by 1 1 8 Full No
Grand total is 13 elements using 104 bytes
«
Pour chaque variable on obtient les informations suivantes :
L’identificateur
La dimension sous la forme Lignes by Colonnes. Un scalaire est donc de dimension 1 by 1.
Le nombre d’éléments. Cette information peut paraître redondante par rapport à la précédente car l’on s’attend à ce que le nombre d’éléments soit égal au nombre de lignes multiplié par le nombre de colonnes. En fait, cette information est utile lors de la gestion des matrices creuses où elle fait référence au nombre de cases réellement pleines.
Le nombre d’octets utilisés
La densité (exprimée en pourcentages pour les matrices creuses ou par l’identificateur Full) donne le rapport entre le nombre d’éléments utilisés et le nombre d’éléments théorique d’un tableau.
Finalement, la dernière colonne indique si l’identificateur fait référence à des données complexes ou réelles.
Suppression de variables
La commande clear permet de supprimer des objets de l’espace de travail. Utilisée seule, elle détruit l’ensemble des variables présentes en mémoire. Comme nous l’indique help clear, d’autres syntaxes sont disponibles :
CLEAR Clear various quantities from the workspace. CLEAR removes all variables from the workspace. CLEAR VARIABLES does the same thing. CLEAR X removes variable or function X from the workspace. CLEAR FUNCTIONS removes all compiled M-functions. CLEAR MEX removes all links to MEX-files. CLEAR ALL removes all variables, functions and MEX links.
If X is global, CLEAR X removes X from the current workspace, but leaves it accessible to any functions declaring it global. CLEAR GLOBAL X completely removes the global variable X. CLEAR GLOBAL removes all global variables.
Les liens MEX permettent d’écrire des fonctions utilisables depuis Matlab vers des modules écrits avec d’autres langages de programmation.
Il est parfois très intéressant de « décharger » une fonction utilisateur. En effet, lorsque l’on met au point une fonction, l’on effectue souvent de fréquents aller-retours entre l’éditeur et l’environnement Matlab afin de vérifier le fonctionnement de la fonction. Et, régulièrement, Matlab ne se rend pas compte que le code a changé et relance une version non mise à jour de la fonction à partir de son cache, plongeant habituellement l’utilisateur dans la plus profonde perplexité. Afin de palier à cet inconvénient majeur et, ainsi, éviter les maux de tête en résultant, il est possible de supprimer du cache la (mau)dite fonction en utilisant clear.
Les variables globales
Par défaut, les variables sont locales à un espace de travail. La commande global permet toutefois de définir des variables globales, c’est à dire dont la portée n’est pas limitée à un espace de travail (par exemple, à un fichier .m) mais à toute une session de travail. Si ce mécanisme permet de partager facilement des données, il doit être utilisé avec parcimonie (et Abonessian) et avec des identificateurs judicieusement choisis afin d’éviter tout risque de collision sur le nommage des variables.
Les commandes suivantes permettent d’influer sur les variables globales :
global X Y Z définit les variables globales X, Y et Z
isglobal(X) renvoie TRUE si et seulement si la variable X est globale
who global, whos global, clear global x, clear global agissent de la manière que who, whos et clear mais sur les variables globales.
Il est à noter que les variables globales apparaîssent sans distinction particulière lorsque l’on utilise who ou whos comme sur l’exemple suivant :
« a = [ 1 2 3 ] a = 1 2 3 « b = 3.4 b = 3.4000 « global c « c=1 c = 1 « whos Name Size Elements Bytes Density Complex
a 1 by 3 3 24 Full No b 1 by 1 1 8 Full No c 1 by 1 1 8 Full No
Grand total is 5 elements using 40 bytes
« whos global Name Size Elements Bytes Density Complex
c 1 by 1 1 8 Full No
Grand total is 1 elements using 8 bytes
«