Généralités sur MATLAB et GNU Octave, caractéristiques de ces 2 logiciels
1.1.1 Qu'est-ce que MATLAB et GNU Octave ?
MATLAB
MATLAB est un logiciel commercial de calcul numérique/scientifique, visualisation et programmation performant et convivial développé par la société The MathWorks Inc. À ne pas confondre cependant avec les outils de calcul symbolique ou calcul formel (tels que les logiciels commerciaux Mathematica ou Maple, ou le logiciel libre Maxima).
Le nom de MATLAB vient de MATrix LABoratory, les éléments de données de base manipulés par MATLAB étant des matrices de dimension quelconque (tableaux n-D, pouvant se réduire à des matrices 2D, vecteurs et scalaires) qui ne nécessitent ni déclaration de type ni dimensionnement (on parle de typage dynamique). Contrairement aux langages de programmation classiques (scalaires), les opérateurs et fonctions MATLAB permettent de manipuler directement ces tableaux, donc la plupart du temps sans programmer de boucles, rendant ainsi MATLAB particulièrement efficace en calcul numérique, analyse et visualisation de données en particulier.
Mais MATLAB est aussi un environnement de développement (progiciel) à part entière : son langage de haut niveau, doté notamment de structures de contrôles, nombreux types de données, fonctions d'entrée-sortie et de visualisation 2D et 3D, outils de conception d'interface utilisateur graphique (GUI)... permet à l'utilisateur d'élaborer ses propres fonctions ainsi que de véritables programmes (M-files, aussi appelés scripts étant donné le caractère interprété de ce langage).
MATLAB est disponible sur les systèmes d'exploitation standards (Windows, GNU/Linux, macOS...). Le champ d'application de MATLAB peut être étendu aux systèmes non linéaires et aux problèmes associés de simulation avec le produit complémentaire SIMULINK. Les capacités de MATLAB peuvent en outre être enrichies par des fonctions plus spécialisées regroupées au sein de dizaines de toolboxes (boîtes à outils qui sont des collections de M-files) couvrant des domaines nombreux et variés tels que :
analyse de données, analyse numérique
statistiques
traitement d'image, cartographie
traitement de signaux et du son en particulier
acquisition de données et contrôle de processus (gestion ports série/parallèle, cartes d'acquisition, réseau TCP ou UDP), instrumentation
logique floue
finance
etc...
Une API (interface de programmation applicative) rend finalement possible l'interaction entre MATLAB et les environnements de développement classiques (exécution de routines C ou Fortran depuis MATLAB, ou accès aux fonctions MATLAB depuis des programmes C ou Fortran).
Ces caractéristiques (et bien d'autres encore) font aujourd'hui de MATLAB un standard incontournable en milieu académique, dans la recherche et l'industrie.
GNU Octave, et autres alternatives à MATLAB
MATLAB est cependant un logiciel commercial fermé qui coûte cher (frais de licence), même aux conditions académiques. Mais la bonne nouvelle, c'est qu'il existe des logiciels libres/open-source analogues voire entièrement compatibles avec MATLAB, donc gratuits et multiplateformes :
GNU Octave : logiciel libre offrant la meilleure compatibilité par rapport à MATLAB (qualifiable de "clone MATLAB", surtout depuis la version Octave 2.9/3.x et avec les packages du dépôt Octave-Forge).
Pour l'installer sur votre ordinateur personnel (Windows, GNU/Linux, macOS), voyez notre page "Installation et configuration de GNU Octave".
L'environnement Scientific Python, basé sur le langage Python et constitué d'un très vaste écosystème d'outils et bibliothèques libres, notamment : l'interpréteur interactif IPython, les possibilités de "notebook" avec Jupyter, NumPy pour manipuler des tableaux, SciPy implémentant des fonctions de calcul scientifique de haut niveau, MatPlotLib pour réaliser des graphiques 2D au moyen de fonctions similaires à celles de MATLAB/Octave, Mayavi pour la visualisation 3D, l'IDE Spyder, etc... Voyez à ce sujet notre support de cours Introduction à la programmation en Python !
Julia, projet récent et très prometteur de développement d'un langage dynamique de haut niveau, à usage général et pour le calcul scientifique, très performant et spécifiquement adapté aux architectures parallèles et distribuées (clusters...).
Scilab : logiciel libre similaire à MATLAB et Octave en terme de possibilités, très abouti, plus jeune que Octave mais non compatible avec MATLAB/Octave (syntaxe et fonctions différentes, nécessitant donc une réécriture des scripts).
SageMath : sous une interface basée Python, il s'agit d'une combinaison de nombreux logiciels libres (NumPy, SciPy, MatPlotLib, SymPy, Maxima, GAP, FLINT, R...) destinés au calcul numérique et symbolique/formel. La syntaxe est cependant différente de celle de MATLAB/Octave.
Dans des domaines voisins, on peut mentionner les logiciels libres suivants :
statistiques et grapheur spécialisé : R (clone de S-Plus), ...
traitement de données et visualisation : GDL (clone de IDL), ...
1.1.2 Quelques caractéristiques fondamentales de MATLAB et GNU Octave
À ce stade de la présentation, nous voulons mentionner quelques caractéristiques fondamentales de MATLAB et de GNU Octave :
Le langage MATLAB/Octave est interprété, c'est-à-dire que chaque expression est traduite en code machine au moment de son exécution. Un programme MATLAB/Octave, appelé script ou M-file, n'a donc pas besoin d'être compilé avant d'être exécuté. Si l'on recherche cependant des performances supérieures, il est possible de convertir des fonctions M-files en P-code, voire en code C ou C++ (avec le MATLAB Compiler). Depuis la version 6.5, MATLAB intègre en outre un JIT-Accelerator (just in time) qui augmente ses performances.
Le typage est entièrement dynamique, c'est-à-dire que l'on n'a pas à se soucier de déclarer le type et les dimensions des variables avant de les utiliser.
MATLAB et Octave sont "case-sensitive", c'est-à-dire qu'ils distinguent les majuscules des minuscules (dans les noms de variables, fonctions...). Ex: les variables abc et Abc sont 2 variables différentes ; la fonction sin (sinus) existe, tandis que la fonction SIN n'est pas définie...
La numérotation des indices des éléments de tableaux débute à 1 (comme en Fortran) et non pas 0 (comme dans la plupart des langages actuels : Python, C/C++, Java...).
1.1.3 GNU Octave versus MATLAB
GNU Octave, associé aux packages Octave-Forge, se présente donc comme le logiciel libre/open-source le plus compatible avec MATLAB. Dans l'apprentissage de MATLAB/Octave, l'un des objectifs de ce support de cours est de vous montrer les similitudes entre Octave-Forge et MATLAB. Il subsiste cependant quelques différences que nous énumérons sommairement ci-dessous. Celles-ci tendent à disparaître avec le temps, étant donné qu'Octave évolue dans le sens d'une toujours plus grande compatibilité avec MATLAB, que ce soit au niveau du noyau de base ou des "packages" Octave-Forge (voir chapitre "Les packages Octave-Forge") implémentant les fonctionnalités des "toolboxes" MATLAB les plus courantes.
Caractéristiques propres à MATLAB :
logiciel commercial (payant) développé par une société (The MathWorks Inc.) et dont le code est fermé
de nombreuses toolboxes commerciales (payantes) élargissent les fonctionnalités de MATLAB dans des domaines très divers
possibilité d'éditer les graphiques par double-clic (éditeur de propriétés)
Caractéristiques propres à Octave-Forge :
logiciel libre et open-source (gratuit, sous licence GPL v3) développé de façon communautaire
logiciel packagé (*.deb, *.rpm...) pour la plupart des distributions GNU/Linux ainsi que disponible sous forme de portages binaires (ou sinon compilable) sur les autres systèmes d'exploitation courants (Windows, macOS)
extensions implémentées sous forme de packages également libres (voir chapitre "Les packages Octave-Forge")
le caractère modulaire de l'architecture et des outils Unix/Linux se retrouve dans Octave, et Octave interagit facilement avec le monde extérieur ; Octave s'appuie donc sur les composants Unix/GNU Linux, plutôt que d'intégrer un maximum de fonctionnalités sous forme d'un environnement monolithique (comme MATLAB)
fonctionnalités graphiques s'appuyant sur différents "backends" (Qt/OpenGL, FLTK/OpenGL, Gnuplot, Octaviz... voir chapitre "Graphiques, images, animations") ce qui peut encore induire quelques différences par rapport à MATLAB
Jusqu'à récemment, les usagers de MATLAB dédaignaient GNU Octave en raison de son absence d'interface utilisateur graphique (GUI). Ce reproche n'est plus fondé depuis la version 3.8 qui implémente, sous le nom Octave GUI, un IDE complet (file browser, workspace, history, éditeur/debugger, variable editor...).
1.2 Démarrer/quitter MATLAB/Octave, prologues et épilogues, IDE
1.2.1 Démarrer et quitter MATLAB ou Octave
Lancement de MATLAB et GNU Octave
4:00 min
Démarrer MATLAB et GNU Octave
Lancement de MATLAB ou Octave sous Windows :
Vous trouvez bien entendu les raccourcis de lancement MATLAB et Octave dans le menu Démarrer > Tous les programmes...
Dans les salles d'enseignement EPFL-ENAC-SSIE sous Windows, les raccourcis se trouvent sous :
MATLAB : Démarrer > Tous les programmes > APP-SSIE-Math and Stats > Matlab x.x > MATLAB (interface graphique)
Octave : Démarrer > Tous les programmes > APP-SSIE-Math and Stats > GNU Octave x.x.x > Octave GUI (interface graphique), respectivement Octave CLI (fenêtre terminal)
Dans les salles d'enseignement EPFL-ENAC-SGC sous Windows, ils se trouvent sous :
MATLAB et Octave : Démarrer > Tous les programmes > Programmes GC > ...
Lancement de MATLAB ou Octave sous Linux :
Sous Ubuntu/GNOME, vous accédez aux lanceurs MATLAB et GNU Octave depuis le bouton "Show Applications" (en frappant la touche super ou touche windows). Ils démarrent ces logiciels en mode interface graphique. Vous pouvez ensuite ancrer ces lanceurs dans votre propre barre de lanceurs.
Lancement depuis une fenêtre terminal (shell) :
MATLAB : la commande matlab démarre MATLAB en mode interface graphique.
Pour lancer MATLAB en mode commande dans la même fenêtre terminal (p.ex. utile si vous utilisez MATLAB à distance sur un serveur Linux), faites: matlab -nodesktop -nosplash
Octave : depuis la version 4.4, la commande octave (sans paramètre) lance Octave en mode commande (Octave CLI) tout en bénéficiant des fonctionnalités liées à la librairie Qt (graphiques, fenêtres de dialogue...). Une autre alternative plus légère consiste à utiliser l'option --no-gui-libs qui n'offre pas les fonctionnalités basées sur Qt mais permet d'effectuer des graphiques basés FLTK.
Si l'exécutable matlab ou octave n'est pas trouvé, complétez le PATH de recherche de votre shell par le chemin complet du répertoire où est installé MATLAB/Octave, ou définissez un alias de lancement intégrant le chemin complet d'accès au répertoire d'installation.
Sortie de MATLAB ou Octave :
Dans la fenêtre de console MATLAB ou Octave, vous pouvez utiliser à choix, dans la fenêtre "Command Window", les commandes exit ou quit
Sous MATLAB, vous pouvez encore utiliser le raccourcis ctrl-q
Sous Octave, vous pouvez faire File > Exit
1.2.2 Répertoire de travail de base, prologues et épilogues
Répertoire de travail de base
Le "répertoire de travail de base" est celui dans lequel MATLAB ou Octave se place au début d'une session. Il s'agit par défaut du "répertoire utilisateur de base" (appelé home), donc /home/votre_username sous Linux, /Users/votre_username sous macOS, Z:\ sous Windows dans les salles ENAC-SSIE...
Si vous désirez changer automatiquement le répertoire de travail MATLAB/Octave au démarrage :
concernant MATLAB, cela dépend du système d'exploitation :
sous Windows, cela se définit sous Preferences > MATLAB > General > Initial working folder ; une autre alternative consiste à définir le répertoire de travail via la propriété "Démarrer dans:" du raccourci de lancement MATLAB
sous Linux (où le réglage de préférence ci-dessus n'existe pas), la méthode usuelle consiste à définir le répertoire de travail dans son prologue /home/username/startup.m par une commande cd chemin_du_repertoire_de_travail ; notez cependant que lorsqu'on démarre MATLAB en mode commande depuis une fenêtre terminal, le répertoire de travail sera celui du shell de la fenêtre terminal
concernant Octave GUI (quel que soit le système d'exploitation), cela se définit sous Edit > Preferences > General > Octave Startup
Prologues
Prologues MATLAB et GNU Octave
1:45 min
Gestion du prologue utilisateur MATLAB ou GNU Octave
Le mécanisme des "prologues" permet à l'utilisateur de faire exécuter automatiquement par MATLAB/Octave un certain nombre de commandes en début de session. Il est implémenté sous la forme de scripts (M-files). Le prologue est très utile lorsque l'on souhaite configurer certaines options au démarrage, par exemple :
sous MATLAB ou Octave :
ajout, dans le path de recherche MATLAB/Octave, des chemins de répertoires dans lesquels l'utilisateur aurait défini ses propres scripts ou fonctions (voir la commande addpath au chapitre "Environnement MATLAB/Octave")
affichage d'un texte de bienvenue (commande disp('texte'))
sous Octave spécifiquement :
chargement de packages (voir la commande pkg load package(s) au chapitre "Packages Octave-Forge")
changement de backend graphique (voir la commande graphics_toolkit au chapitre "Graphiques/Concepts de base")
choix de l'éditeur pour Octave-CLI (voir la commande EDITOR au chapitre "Éditeur et debugger")
Lorsque MATLAB démarre, il passe successivement par les échelons de prologues suivants :
le script de démarrage système matlabrc.m
puis le premierscript nommé startup.m qu'il trouve en parcourant le "répertoire utilisateur de base" et les différents répertoires définis dans le path MATLAB (voir chapitre "Environnement MATLAB/Octave").
Lorsque Octave démarre, il passe successivement par les échelons de prologues suivants :
le prologue OCTAVE_HOME/share/octave/site/m/startup/octaverc, puis le prologue OCTAVE_HOME/share/octave/version/m/startup/octaverc (qui est un lien symbolique vers le fichier /etc/octave.conf)
depuis la version 4.2, Octave exécute aussi le(s) éventuel(s) prologue(s) startup.m se trouvant dans les répertoires pointés par le "function path"
puis il exécute l'éventuel script nommé .octaverc se trouvant dans le "répertoire utilisateur de base"
et enfin, si l'on démarre Octave en mode commande depuis une fenêtre terminal, il exécute l'éventuel .octaverc se trouvant dans le répertoire courant ;
pour (ré)exécuter ces scripts manuellement en cours de session, vous pouvez faire source('chemin/prologue')
Épilogues
S'agissant des épilogues MATLAB et Octave, il s'agit du mécanisme automatiquement invoqué lorsque l'on termine une session :
MATLAB exécute le premier script nommé finish.m qu'il trouve en parcourant le "répertoire utilisateur de base" puis les différents répertoires définis dans le path MATLAB
Octave s'appuie sur la fonction atexit
1.2.3 Interface graphique et IDE de MATLAB
Les IDE de MATLAB et GNU Octave
6:25 min
Les différentes fenêtres des environnements de développement MATLAB et GNU Octave
MATLAB intègre depuis longtemps un IDE (Integrated Development Environment), c'est-à-dire une interface graphique (GUI) se composant, en plus de la console de base et des fenêtres de graphiques, de diverses sous-fenêtres, d'un bandeau de menus et d'une barre d'outils (voir illustration ci-dessous).
Interface graphique et IDE de MATLAB R2014 (ici sous Windows)
Cette interface graphique offre les sous-fenêtres suivantes :
Command Window : console MATLAB, c'est-à-dire fenêtre d'entrée/sortie standard
Current Folder : un double-clic sur un dossier change de répertoire courant, et sur un fichier cela l'ouvre dans l'éditeur. Voyez aussi le menu contextuel droite-clic qui permet de exécuter/renommer/détruire un fichier, respectivement renommer/détruire pour un dossier... Dans la ligne d'en-tête, droite-clic permet d'activer l'affichage des attributs taille/type/date de modification.
Workspace : outre l'affichage des variables du workspace (comme le ferait whos), il est possible d'éditer celles-ci par double-clic. En outre le menu contextuel droite-clic permet de les renommer, supprimer et grapher
Command History : affiche les dernières commandes passées. Le double-clic sur une commande permet de la ré-exécuter. Pour ré-exécuter plusieurs commandes, les sélectionner (maj-clic pour sélection continue, ctrl-clic pour sélection discontinue), puis faire droite-clicEvaluate Selection. De plus les commandes sélectionnées peuvent copiées dans le presse-papier avec droite-clicCopy ou être injectées dans un nouveau script avec droite-clicCreate Script
Menu bandeau : composé de 4 onglets HOME (commandes de base), PLOTS (fonction graphiques), APPS, SHORTCUTS (raccourcis), EDITOR (édition et debugging), PUBLISH, VIEW
Barre d'outils : permet essentiellement de changer de répertoire courant et lancer de recherches par nom de fichier/répertoire
Les différents réglages MATLAB s'effectuent au moyen du bouton Preferences
1.2.4 Interface graphique et IDE de GNU Octave
GNU Octave n'a longtemps été utilisable (en usage interactif ou lancement de scripts) que depuis une fenêtre de terminal. Dès 2014 (avec Octave 3.8) une interface graphique officielle nommée Octave GUI (Octave Graphical User Interface) voit le jour. Elle se compose, en plus de la console de base et des fenêtres de graphiques, de diverses sous-fenêtres, d'une barre de menus et d'une barre d'outils (voir illustration ci-dessous).
Interface graphique et IDE de GNU Octave 4.4 (ici sous Windows)
Cette interface graphique offre les sous-fenêtres suivantes :
Command Window : console Octave, c'est-à-dire fenêtre d'entrée/sortie standard
File Browser :
Le champ supérieur indique quel est le répertoire courant. Par un menu déroulant, affichant l'historique des répertoires précédents, il permet aussi de changer de répertoire. L'icône/menu à droite permet de créer des dossiers ou fichiers, de rechercher des dossiers et fichiers par leur nom, et même de rechercher des fichiers selon leur contenu (comme Edit > Find Files).
Dans la liste en-dessous, un double-clic sur un dossier change de répertoire courant, et sur un fichier cela l'ouvre dans l'éditeur. Voyez aussi le menu contextuel droite-clic qui permet de exécuter/renommer/détruire un fichier, respectivement chercher/renommer/détruire pour un dossier... Dans la ligne d'en-tête, droite-clic permet d'activer l'affichage des attributs taille/type/date de modification.
Workspace : outre l'affichage des variables du workspace (comme le ferait whos) on peut : renommer une variable, l'afficher (disp) ou la grapher (plot ou stem). Un filtre permet de restreindre l'affichage des variables dont le nom contient une chaîne. Le double-clic sur une variable permet d'ouvrir celle-ci dans le Variable Editor (openvar).
Command History : affiche les dernières commandes passées (comme le ferait history). Le double-clic sur une commande permet de la ré-exécuter. Pour ré-exécuter plusieurs commandes, les sélectionner (maj-clic pour sélection continue, ctrl-clic pour sélection discontinue), puis faire droite-clicEvaluate. De plus les commandes sélectionnées peuvent copiées dans le presse-papier avec droite-clicCopy ou être injectées dans un nouveau script avec droite-clicCreate script. Un filtre permet aussi de restreindre l'affichage des commandes contenant une chaîne.
Barre de menus : nous attirons notamment votre attention sur :
- File > Recent Editor Files : éditer un fichier récemment ouvert
- Edit > Preferences : adapter les réglages de Octave GUI
- Window > Reset Default Window Layout : rétablir la disposition par défaut des sous-fenêtres
Barre d'outils : outre les icônes habituelles (nouveau fichier, ouvrir, copier, coller...) on retrouve le champ/menu d'affichage/sélectionnement du répertoire courant
Les différents réglages de Octave GUI s'effectuent via le menu Edit > Preferences
Pour mémoire, d'autres tentatives de développement d'interfaces graphiques à Octave (voire même d'IDE's complets) ont existé par le passé et sont encore parfois utilisées (notamment QtOctave), généralement sous Linux et parfois sous Windows :
QtOctave (voir notre ancienne page), qui a eu le plus de succès mais n'est plus développée depuis mi-2011
1.3 Outils d'aide et d'information, références internet utiles
1.3.1 Aide en ligne
Aide en ligne dans MATLAB et GNU Octave
6:25 min
Utiliser l'aide en ligne dans MATLAB et GNU Octave
help fonction
Affiche, dans la fenêtre de commande MATLAB/Octave, la syntaxe et la description de la fonction MATLAB/Octave spécifiée. Le mode de défilement, continu (par défaut) ou "paginé", peut être modifié avec la commande more on|off (voir plus bas) Passée sans paramètres, la commande help liste les rubriques d'aide principales (correspondant à la structure de répertoires définie par le path)
helpwin fonction, ou doc sujet, ou menu Help ou icône ? du bandeau MATLAB
Même effet que la commande help, sauf que le résultat est affiché dans la fenêtre d'aide spécifique MATLAB "Help" (voir illustration ci-dessous)
Fenêtre d'aide MATLAB R2014 (ici sous Windows)
doc sujet
Sous Octave, cette commande recherche et affiche l'information relative au sujet désiré à partir du manuel Octave. Avec Octave GUI, le résultat est affiché dans la fenêtre de l'onglet "Documentation" qui offre un mécanisme de navigation par hyper-liens.
Fenêtre de documentation GNU Octave 4.0 (ici sous Windows)
lookfor {-all} mot-clé
Recherche par mot-clé dans l'aide MATLAB/Octave. Cette commande retourne la liste de toutes les fonctions dont le mot-clé spécifié figure dans la première ligne (H1-line) de l'aide.
Avec l'option -all, la recherche du mot-clé spécifié s'effectue dans l'entier des textes d'aide et pas seulement dans leurs 1ères lignes (H1-lines); prend donc passablement plus de temps et retourne davantage de références (pas forcément en relation avec ce que l'on cherche...)
Ex: help inverse retourne dans MATLAB l'erreur comme quoi aucune fonction "inverse" n'existe ; par contre lookfor inverse présente la liste de toutes les fonctions MATLAB/Octave en relation avec le thème de l'inversion (notamment la fonction inv d'inversion de matrices)
Accès au Manuel Octave complet (HTML)
Avec Help > Documentation > Online, ou via ce lien
Dans les salles ENAC-SSIE sous Windows avec Démarrer > Tous les programmes > AP-SSIE-Math and Stats > GNU Octave x.x > Documentation, puis sous-menus HTML ou PDF
Voyez en particulier, vers la fin de la table des matières, le "Function Index" qui est un index hyper-texte de toutes les fonctions Octave
Liste dans la fenêtre Help Browser les exemples/démos liés au type et nom de produit spécifié
Ex : demo matlab : liste les démos de base MATLAB ;
demo toolbox statistics : liste les démos associées à la toolbox statistics
demo('fonction', {N} )
Exécute les démos interactives (ou la Nème démo) liée(s) à la fonction spécifiée
Ex : demo('plot') : affiche des démos relatives à la fonction plot
rundemos(package)
Exécute les démos définies dans le répertoire du package spécifié (les packages sont sous OCTAVE_HOME/share/octave/packages/package)
Ex : rundemos('signal-version') : lance les démos du package "signal" (traitement de signaux) dans la version spécifiée (faites pkg list pour connaître le version de package installée)
1.3.3 Ressources Internet utiles relatives à MATLAB et Octave
La commande info affiche sous Octave différentes sources de contact utiles : mailing list, wiki, packages, bugs report...
1.4 Généralités sur les variables, expressions et fonctions
Répertoires, variables, workspace, manipulation de tableaux de nombres
39:03 min
Dans cette vidéo :
• nous présentons les règles relatives au nommage de variables sous MATLAB/Octave et la manipulation des variables
• nous indiquons comment naviguer d'un répertoire dans un autre
• nous présentons la notion de "workspace", et comment le sauvegarder/recharger
• nous voyons à quoi ressemblent les tableaux de nombres et comment les manipuler
• nous présentons les différents types possibles pour stocker des nombres (réels virgule flottante simple ou double précision, entiers et nombres complexes)
1.4.1 Variables et expressions
Les variables créées au cours d'une session (interactivement depuis la fenêtre de commande MATLAB/Octave ou par des M-files) résident en mémoire dans ce que l'on appelle le "workspace" (espace de travail, voir chapitre "Workspace MATLAB/Octave"). Comme déjà dit, le langage MATLAB ne requiert aucune déclaration préalable de type de variable et de dimension de tableau/vecteur (langage dit à typage dynamique). Lorsque MATLAB/Octave rencontre un nouveau nom de variable, il crée automatiquement la variable correspondante et y associe l'espace mémoire nécessaire dans le workspace. Si la variable existe déjà, MATLAB/Octave change son contenu et, si nécessaire, lui alloue un nouvel espace mémoire en cas de redimensionnement de tableau. Les variables sont définies à l'aide d'expressions.
Un nom de variable valide consiste en une lettre suivie de lettres, chiffres ou caractères souligné "_". Les lettres doivent être dans l'intervalle a-z et A-Z, donc les caractères accentués ne sont pas autorisés. MATLAB (mais pas Octave) n'autorise cependant pas les noms de variable dépassant 63 caractères (voir la fonction namelengthmax). Ex: noms de variables valides : x_min, COEFF55a, tres_long_nom_de_variable Ex: noms non valides : 86ab (commence par un chiffre), coeff-555 (est considéré comme une expression), temp_mesurée (contient un caractère accentué)
Les noms de variable sont donc case-sensitive (distinction des majuscules et minuscules). Ex: MAT_A désigne une matrice différente de mat_A
Pour se référer à un ensemble de variables (principalement avec commandes who, clear, save...), on peut utiliser les caractères de substitution* (remplace 0, 1 ou plusieurs caractères quelconques) et ? (remplace 1 caractère quelconque). Ex: si l'on a défini les variables x=14 ; ax=56 ; abx=542 ; , alors : who *x liste toutes les variables x, ax et abx clear ?x n'efface que la variables ax
Une "expression" MATLAB/Octave est une construction valide faisant usage de nombres, de variables, d'opérateurs et de fonctions. Ex: pi*r^2 et sqrt((b^2)-(4*a*c)) sont des expressions
Nous décrivons ci-dessous les comandes de base relatives à la gestion des variables. Pour davantage de détails sur la gestion du workspace et les commandes y relatives, voir le chapitre "Workspace MATLAB/Octave".
variable = expression
Affecte à variable le résultat de l' expression, et affiche celui-ci Ex: r = 4, surface=pi*r^2
variable = expression ;
Affecte à variable le résultat de l'expression, mais effectue cela "silencieusement" (effet du caractère ; terminant l'instruction) c'est-à-dire sans affichage du résultat à l'écran
expression
Si l'on n'affecte pas une expression à une variable, le résultat de l'évaluation de l'expression est affecté à la variable de nom prédéfini ans ("answer") Ex: pi*4^2 retourne la valeur 50.2655... sur la variable ans
a) [var1, var2, ... varn] = deal(v1, v2, ... vn)
b) [var1, var2, ... varn] = deal(v)
La fonction deal permet d'affecter plusieurs variables en une seule instruction. Il faut que l'on ait exactement le même nombre d'éléments à gauche et à droite de l'expression (forme a)), ou que l'on ait un seul élément à droite (forme b)), sinon deal retourne une erreur. Ex: [a, b, c] = deal(11, 12, 13) est identique à a=11, b=12, c=13 [a, b, c] = deal(10) est identique à a=b=c=10 [coord(1,:), coord(2,:)] = deal([100,200], [110,210]) donne coord=[100, 200 ; 110, 210]
variable
Affiche le contenu de la variable spécifiée
who {variable(s)}
Liste le nom de toutes les variables couramment définies dans le workspace (ou de la (des) variable(s) spécifiée(s) )
whos {variable(s)}
Affiche une liste plus détaillée que who de toutes les variables couramment définies dans le workspace (ou de la (des) variable(s) spécifiée(s) ) : nom de la variable, dimension, espace mémoire, classe.
variable = who{s} ...
La sortie des commandes who et whos peut elle-même être affectée à une variable de type tableau cellulaire (utile en programmation !)
clear {variable(s)}
Efface du workspace toutes les variables (ou la(les) variable(s) spécifiée(s), séparées par des espaces et non pas des virgules !) Ex: clear mat* détruit toutes les variables dont le nom commence par "mat"
openvar variable openvar('variable')
Affiche la variable dans l'interface graphique Variable Editor. Identique à droite-clic sur la variable dans la fenêtre Workspace.
Layout > Show > Workspace Window > Show Workspace
Affichage de la fenêtre "Workspace" MATLAB ou Octave GUI (illustrations ci-dessous) qui présente, à la façon de la commande whos, toutes les variables courantes du workspace et qu'il est possible de manipuler avec le menu contextuel droite-clic (renommer, détruire... voire même éditer sous MATLAB par double-clic)
Workspace browser de MATLAB (ici sous Windows)
Workspace browser de Octave GUI (ici sous Windows)
1.4.2 Généralités sur les fonctions
Comme pour les noms de variables, les noms de fonctions sont "case-sensitive" (distinction des majuscules et minuscules). Les noms de pratiquement toutes les fonctions prédéfinies MATLAB/Octave sont en minuscules. Ex: sin() est la fonction sinus, tandis que SIN() n'est pas définie !
Les fonctions MATLAB/Octave sont implémentées soit dans le noyau MATLAB/Octave (fonctions "built-ins"), soit par des "toolboxes" MATLAB, respectivement des "packages" Octave, ou encore par vos propres M-files et packages. Ex: which sin indique que sin est une fonction built-in, alors que which axis montre dans quel M-file est implémentée la fonction axis.
Attention : les noms de fonction ne sont pas réservés et il est donc possible de les écraser ! Ex: si l'on définissait sin(1)=444, l'affectation val=sin(1) retournerait alors 444 ! Pour restaurer la fonction originale, il faudra dans ce cas passer la commande clear sin, et la fonction sin(1) retournera alors à nouveau le sinus de 1 radian (qui est 0.8415).
L'utilisateur a donc la possibilité de créer ses propres fonctions au moyen de M-files (voir chapitre "Fonctions").
1.5 Les types relatifs aux nombres
Types numériques
12:00 min
Les différents types numériques
1.5.1 Types réels, double et simple précision
De façon interne (c'est-à-dire en mémoire=>workspace, et sur disque=>MAT-files), MATLAB/Octave stocke par défaut tous les nombres en virgule flottante "double précision" (au format IEEE qui occupe 8 octets par nombre, donc 64 bits). Les nombres ont donc une précision finie de 16 chiffres décimaux significatifs, et une étendue allant de 10-308 à 10+308. Cela permet donc de manipuler, en particulier, des coordonnées géographiques.
Les nombres réels seront saisis par l'utilisateur selon les conventions de notation décimale standard (si nécessaire en notation scientifique avec affichage de la puissance de 10) Ex de nombres réels valides : 3, -99, 0.000145, -1.6341e20, 4.521e-5
Il est cependant possible de définir des réels en virgule flottante "simple précision", donc stockés sur des variables occupant 2 fois moins d'espace en mémoire (4 octets c-à-d. 32 bits), donc de précision deux fois moindre (7 chiffres décimaux significatifs, et une étendue allant de 10-38 à 10+38). On utilise pour cela la fonction de conversion single( nombre | variable ), ou en ajoutant le paramètre 'single' à certaines fonctions telles que ones, zeros, eye... De façon inverse, la fonction de conversion double(variable) retourne, sur la base d'une variable simple précision, un résultat double précision.
ATTENTION cependant : lorsque l'on utilise des opérateurs ou fonctions mélangeant des opérandes/paramètres de types simple et double précision, le résultat retourné sera toujours de type simple précision. Vous pouvez vérifier cela en testant vos variables avec la commande whos.
Ex • l'expression 3 * ones(2,2) retourne une matrice double précision
• mais les expressions single(3) * ones(2,2) ou 3 * ones(2,2,'single') ou single(3 * ones(2,2)) retournent toutes une matrice simple précision
Si vous lisez des données numériques réelles à partir d'un fichier texte et désirez les stocker en simple précision, utilisez la fonction textscan avec le format %f32 (32 bits, soit 4 octets). Le format %f64 est synonyme de %f et génère des variables de double précision (64 bits, soit 8 octets).
1.5.2 Types entiers, 64/32/16/8 bits
On vient de voir que MATLAB/Octave manipule par défaut les nombres sous forme réelle en virgule flottante (double précision ou, sur demande, simple précision). Ainsi l'expression nombre = 123 stocke de façon interne le nombre spécifié sous forme de variable réelle double précision, bien que l'on ait saisi un nombre entier.
Il est cependant possible de manipuler des variables de types entiers, respectivement :
• 8 bits : nombre stocké sur 1 octet ; si signé, étendue de -128 (-2^7) à 127
• 16 bits : nombre stocké sur 2 octets ; si signé, étendue de -32'768 (-2^15) à 32'767
• 32 bits : nombre stocké sur 4 octets ; si signé, étendue de -2'147'483'648 (-2^31) à 2'147'483'647 (9 chiffres)
• 64 bits : nombre stocké sur 8 octets ; si signé, étendue de -9'223'372'036'854'775'808 (-2^63) à 9'223'372'036'854'775'807 (18 chiffres)
Les opérations arithmétiques sur des entiers sont plus rapides que les opérations analogues réelles.
On dispose, pour cela, des possibilités suivantes :
les fonctions de conversion int8, int16, int32 et int64 génèrent des variables entières signées stockées respectivement sur 8 bits, 16 bits, 32 bits ou 64 bits ; les valeurs réelles (double ou simple précision) sont arrondies au nombre le plus proche (équivalent de round)
les fonctions de conversion uint8, uint16, uint32 et uint64 génèrent des variables entières non signées (unsigned) stockées respectivement sur 8 bits, 16 bits, 32 bits ou 64 bits
en ajoutant l'un des paramètres 'int8', 'uint8', 'int16', 'uint16', 'int32', 'uint32', 'int64' ou 'uint64' à certaines fonctions telles que ones, zeros, eye...
les valeurs réelles (double ou simple précision) sont arrondies au nombre le plus proche (équivalent de round)
IMPORTANT : Lorsque l'on utilise des opérateurs ou fonctions mélangeant des opérandes/paramètres de types entier et réels (double ou simple précision), le résultat retourné sera toujours de type entier ! Si l'on ne souhaite pas ça, il faut convertir au préalable l'opérande entier en réel double précision (avec double(entier)) ou simple précision (avec single(entier)) !
Sous MATLAB, certaines opérations mixant des données de type réel avec des données de type entier 64 bits ne sont pas autorisées. Ainsi l'expression 13.3 * int64(12) génère une erreur.
Ex :
• int8(-200) retourne -128 (valeure minimale signée pour int8), int8(-4.7) retourne -5, int8(75.6) retourne 76, int8(135) retourne 128 (valeure maximale signée pour int8)
• uint8(-7) retourne 0 (valeure minimale non signée pour int8), uint8(135.2) retourne 135, uint8(270) retourne 255 (valeure maximale non signée pour int8)
• si a=uint8(240), a/320 retourne 0, alors que single(a)/320 retourne 0.75000
• la série indices1=int8(1:100) occupe 8x moins de place en mémoire (100 octets) que la série indices2=1:100 (800 octets)
• 4.6 * ones(2,2,'int16') retourne une matrice de dimension 2x2 remplie de chiffres 5 stockés chacun sur 2 octets (entiers 16 bits)
Si vous lisez des données numériques entières à partir d'un fichier texte et désirez les stocker sur des entiers et non pas sur des réels double précision, utilisez la fonction textscan avec l'un des formats suivants :
entiers signés : %d8 (correspondant à int8), %d16 (correspondant à int16), %d32 ou %d (correspondant à int32), %d64 (correspondant à int64)
entiers non signés (positifs) : %u8 (correspondant à uint8), %u16 (correspondant à uint16), %u32 ou %u (correspondant à uint32), %u64 (correspondant à uint64)
1.5.3 Nombres complexes
MATLAB/Octave est aussi capable de manipuler des nombres complexes (stockés de façon interne sous forme de réels double precision, mais sur 2x 8 octets, respectivement pour la partie réelle et la partie imaginaire) Ex de nombres complexes valides (avec partie réelle et imaginaire) : 4e-13 - 5.6i, -45+5*j
Le tableau ci-dessous présente quelques fonctions MATLAB/Octave relatives aux nombres complexes.
Fonction
Description
real(nb_complexe) imag(nb_complexe)
Retourne la partie réelle du nb_complexe spécifié,
respectivement sa partie imaginaire
Ex: real(3+4i) retourne 3, et imag(3+4i) retourne 4
conj(nb_complexe)
Retourne le conjugué du nb_complexe spécifié
Ex: conj(3+4i) retourne 3-4i
abs(nb_complexe)
Retourne le module du nb_complexe spécifié
Ex: abs(3+4i) retourne 5
arg(nb_complexe)
Retourne l'argument du nb_complexe spécifié
Ex: arg(3+4i) retourne 0.92730
isreal(var), iscomplex(var)
Permet de tester si l'argument (sclaire, tableau) contient des nombres réels ou complexes
1.5.4 Conversion de nombres de la base 10 dans d'autres bases
Notez que lorsque des nombres sont définis dans d'autres bases que la base 10, ils sont considérés comme des chaînes (str_binaire, str_hexa et str_baseB dans les exemples ci-après) !
conversion décimal → binaire et vice-versa : str_binaire=dec2bin(nb_base10), nb_base10=bin2dec(str_binaire)
conversion décimal → binaire et vice-versa : str_hexa=dec2hex(nb_base10), nb_base10=hex2dec(str_hexa)
conversion décimal → base B et vice-versa : str_baseB=dec2base(nb_base10, B), nb_base10=base2dec(str_baseB, B)
1.6 Fenêtre de commandes MATLAB/Octave
1.6.1 Généralités
La fenêtre "Command Window" apparaît donc automatiquement dès que MATLAB ou Octave est démarré (voir illustrations plus haut). Nous présentons ci-dessous quelques commandes permettant d'agir sur le contenu et comportement de cette fenêtre.
more on|off
Activation ou désactivation du mode de défilement "paginé" (contrôlé) dans la fenêtre "Command Window". Par défaut il n'est pas paginé.
Dans Octave, cette commande positionne la valeur retournée par la fonction built-in page_screen_output (respectivement à 0 pour off et 1 pour on).
En mode paginé, on agit sur le défilement avec les touches suivantes :
• MATLAB: enter pour avancer d'une ligne, espace pour avancer d'une page, q pour sortir (interrompre l'affichage)
• Octave: mêmes touche que pour MATLAB, avec en outre: curseur-bas et curseur-haut pour avancer/reculer d'une ligne ; PageDown ou f, resp. PageUp ou b pour avancer/reculer d'une page ; 1G pour revenir au début ; nombreG pour aller à la nombre-ième ligne ; G pour aller à la fin ; /chaîne pour rechercher chaîne ; n ou N pour recherche respectivement l'occurrence suivante ou précédente de cette chaîne ; h pour afficher l'aide du pagineur
PS1('specification')
Changement du prompt primaire de Octave ("invite" dans la fenêtre de commande Octave)
La specification est une chaîne pouvant notamment comporter les séquences spéciales suivantes : \w : chemin complet (path) du répertoire courant \# : numéro de commande (numéro incrémental) \u : nom de l'utilisateur courant \H : nom de la machine courante Ex: la commande PS1('\w \#> ') modifie le prompt de façon qu'il affiche le répertoire courant suivi d'un espace puis du numéro de commande suivi de ">" et d'un espace
clc ou home Clear Commands > Command Window Edit > Clear Command Window
clc efface le contenu de la fenêtre de commande (clear command window), et positionne le curseur en haut à gauche home positionne le curseur en haut à gauche, sans effacer la fenêtre de commande sous MATLAB
format loose|compact
Activation ou suppression de l'affichage de lignes vides supplémentaires dans la fenêtre de commande (pour une mise en plage plus ou moins aérée). MATLAB et Octave sont par défaut en mode loose, donc affichage de lignes vides activé
1.6.2 Caractères spéciaux dans les expressions MATLAB et Octave
La commande helpwin punct décrit l'ensemble des caractères spéciaux MATLAB. Parmi ceux-ci, les caractères ci-dessous sont particulièrement importants.
Caractère
Description
;
• Suivie de ce caractère, une commande sera normalement exécutée (sitôt enter frappé), mais son résultat ne sera pas affiché. Caractère faisant par la même occasion office de séparateur de commandes lorsque l'on saisit plusieurs commandes sur la même ligne
• Utilisé aussi comme caractère de séparation des lignes d'une matrice lors de la définition de ses éléments
,
• Caractère utilisé comme séparateur de commande lorsque l'on souhaite passer plusieurs commandes sur la même ligne
• Utilisé aussi pour délimiter les indices de ligne et de colonne d'une matrice
• Utilisé également pour séparer les différents paramètres d'entrée et de sortie d'une fonction
Ex: a=4 , b=5 affecte les variables a et b et affiche le résultat de ces affectations ; tandis que a=4 ; b=5 affecte aussi ces variable mais n'affiche que le résultat de l'affectation de b. A(3,4) désigne l'élément de la matrice A situé à la 3e ligne et 4e colonne
... ("ellipsis") \
• Utilisé en fin de ligne lorsque l'on veut continuer une instruction sur la ligne suivante (sinon la frappe de enter exécute l'instruction)
: ("colon")
• Opérateur de définition de séries (voir chapitre "Séries") et de plage d'indices de vecteurs et matrices
Ex: 5:10 définit la série "5 6 7 8 9 10"
% ou #
• Ce qui suit est considéré comme un commentaire (non évalué par MATLAB/Octave). Utile pour documenter un script ou une fonction (M-file)
• Lorsqu'il est utilisé dans une chaîne, le caractère % débute une définition de format (voir chapitre "Entrées-sorties")
Ex: commentaire : r=5.5 % rayon en [cm] ; format sprintf('Rabais %2u%%', 25)
%{
plusieurs lignes de code... %}
• Dans un M-file, les séquences %{ et %} délimitent un commentaire s'étendant sur plusieurs ligne . Notez bien qu'il ne doit rien y avoir d'autre dans les 2 lignes contenant ces séquences %{ et %} (ni avant ni après)
' (apostrophe)
• Caractère utilisé pour délimiter le début et la fin d'une chaîne de caractère
• Également utilisé comme opérateur de transposition de matrice
Les caractères espace et tab ne sont en principe pas significatifs dans une expression (MATLAB/Octave travaille en "format libre"). Vous pouvez donc en mettre 0, 1 ou plusieurs, et les utiliser ainsi pour mettre en page ("indenter") le code de vos M-files. Ex: b=5*a est équivalent à b = 5 * a
Pour nous-autres, utilisateurs d'ordinateurs avec clavier "Suisse-Français", rappelons que l'on forme ainsi les caractères suivants qui sont importants sous MATLAB (si vous ne trouvez pas la touche AltGr, vous pouvez utiliser à la place la combinaison ctrl-alt) :
pour [ frapper AltGr-è
pour ] frapper AltGr-!
pour \ frapper AltGr-<
pour ~ frapper AltGr-^ suivi de espace
1.6.3 Rappel et édition des expressions, copier/coller
L'usage des touches de clavier suivantes permet de rappeler, éditer et exécuter des commandes MATLAB/Octave passées précédemment :
Touche
Description
curseur-haut et curseur-bas
Rappelle la ligne précédente / suivante
curseur-gauche et curseur-droite
Déplace le curseur d'un caractère à gauche / à droite
ctrl-curseur-gauche et ctrl-curseur-droite
Déplace le curseur d'un mot à gauche / à droite
home et end
Déplace le curseur au début / à la fin de la ligne
backspace et delete
Détruit le caractère à gauche / à droite du curseur
ctrl-k
Détruit les caractères depuis le curseur jusqu'à la fin de la ligne
escape
Efface entièrement la ligne
enter
Exécute la commande courante
ctrl-r
Passe dans le mode "reverse-i-search" (comme dans le shell Bash sous Linux) permettant de retrouver dans l'historique une commande passée en saisissant une partie de celle-ci. Presser plusieurs fois de suite ctrl-r permet de continuer de rechercher en arrière dans l'historique la même chaîne de caractères.
Voir en outre, en ce qui concerne Octave, le mécanisme de l'historique au chapitre "Workspace".
Pour copier/coller du texte (commandes, données...) dans la fenêtre de commandes, MATLAB et Octave offrent les mêmes possibilités mais avec une interface différente.
Fonction
MATLAB (Win/Lin/macOS)
Octave GUI (Win/Lin/macOS)
Octave CLI Windows
Octave CLI Linux (X-Window)
Octave CLI macOS
Copier la sélection dans le "presse-papier"
Edit > Copy ou ctrl-c
(sur macOS cmd-c)
Edit > Copy ou ctrl-c
(sur macOS cmd-c)
Sélectionner, puis enter.
Ou sélectionner puis bouton clic-droite
La sélection courante est automatiquement copiée dans le "presse-papier"
Edit > Copy ou cmd-c
Si on a une souris à 3 boutons, on peut aussi utiliser la technique Linux
Coller le contenu du "presse-papier" à la position courante du curseur d'insertion
Edit > Paste ou ctrl-v
(sur macOS cmd-v)
Edit > Paste ou ctrl-v
(sur macOS cmd-v)
Bouton clic-droite
Pour que cela fonctionne, le raccourci de lancement Octave doit être correctement configuré (voir chapitre "Installation de Octave sous Windows")
Bouton clic-milieu
Edit > Paste ou cmd-v
Si on a une souris à 3 boutons, on peut aussi utiliser la technique Linux
Remarque : sous MATLAB sous Linux, si les raccourcis Copier et Coller ne fonctionnent pas, allez dans les [Preferences] sous MATLAB > Keyboard > Shortcuts, et dans le menu "Active settings" passez de "Emacs Default Set" en "Windows Default Set".
1.6.4 Extension automatique ("completion") de noms de variables/fonctions/fichiers...
La fenêtre "Command Window" MATLAB/Octave offre en outre (comme dans les shell Unix) un mécanisme dit de "commands, variables & files completion" : lorsque l'on entre un nom de fonction/commande, de variable ou de fichier, il est possible de ne frapper au clavier que les premiers caractères de celui-ci, puis utiliser la touche tab pour demander à MATLAB/Octave de compléter automatiquement le nom :
s'il y a une ambiguité avec une autre commande/fonction/variable (commençant par les mêmes caractères), MATLAB affiche alors directement un "menu déroulant" contenant les différentes possibilités ; on sélectionne celle que l'on souhaite avec curseur-haut ou curseur-bas, puis on valide avec enter
si Octave ne complète rien, c'est qu'il y a une ambiguité avec une autre commande/fonction/variable (commençant par les mêmes caractères) : on peut alors compléter le nom au clavier, ou frapper une seconde fois tab pour qu'Octave affiche les différentes possibilités (et partiellement compléter puis represser tab ...)
1.6.5 Formatage de l'affichage des nombres dans la fenêtre de commandes
Dans tous les calculs numériques, MATLAB/Octave travaille toujours de façon interne en précision maximum, c'est-à-dire en double précision (voir plus haut).
On peut choisir le format d'affichage des nombres dans la fenêtre "Command Window" à l'aide de la commande format :
Commande
Type d'affichage
Exemple
format {short {e}}
Affichage par défaut : notation décimale fixe à 5 chiffres significatifs
Avec option e => notation décimale flottante avec exposant
72.346
7.2346e+001
format long {e}
Affichage précision max : 15 chiffres significatifs
Avec option e => avec exposant
72.3456789012345
7.23456789012345e+001
format bank
Format monétaire (2 chiffres après virgule)
72.35
format hex
En base hexadécimale
4052161f9a65ee0f
format rat
Approximation par des expressions rationnelles (quotient de nombres entiers)
3.333... s'affichera 10/3
Sous Octave seulement, on peut activer/désactiver le mécanisme d'affichage de vecteurs/matrices précédé ou non par un "facteur d'échelle". Toujours activé sous MATLAB, ce mécanisme n'est pas activé par défaut sous Octave.
Ex: la fonction logspace(1,7,5) affichera par défaut, sous Octave :
mais si on se met dans le mode fixed_point_format(1), elle affichera (comme sous MATLAB) :
1.0e+07 *
0.00000 0.00003 0.00100 0.03162 1.00000
Remarquez le "facteur d'échelle" (de multiplication) 1.0e+07 de la première ligne.
Pour un contrôle plus pointu au niveau du formatage à l'affichage, voir les fonctions sprintf (string print formated) et fprintf (file print formated) (par exemple au chapitre "Entrées-sorties").
1.7 Les packages Octave-Forge
Gestion des packages sous GNU Octave
4:00 min
Installation et gestion des packages sous GNU Octave
Les "packages" sont à Octave ce que les "toolboxes" sont à MATLAB. C'est à partir de la version 2.9.12 que l'architecture d'Octave implémente complètement les packages (Octave étant auparavant beaucoup plus monolithique).
Tous les packages Octave-Forge sont recensés et disponible en téléchargement via le dépôt (repository) officiel https://octave.sourceforge.io/packages.php. L'installation et l'utilisation d'un package consiste à :
le télécharger (depuis le site ci-dessus) => fichier de nom package-version.tar.gz
l'installer (une fois pour toutes) ; au cours de cette opération, les fichiers constituant le package seront "compilés" puis mis en place
le charger dans le cadre de chaque session Octave où l'on veut l'utiliser (ou le charger de façon systématique via le prologue .octaverc)
Les étapes 1. et 2. peuvent être combinées avec la nouvelle option -forge (commande pkg install -forge package).
Si vous désirez savoir dans quel package est implémentée une fonction de nom donné (en vue d'installer ce package), vous pouvez consulter la liste des fonctions https://octave.sourceforge.io/list_functions.php (catégorie "alphabetical"). Le nom du package est spécifié entre crochets à coté du nom de la fonction.
S'agissant des packages installés, la commande which fonction vous indiquera dans quel package ou quel oct-file la fonction spécifiée est implémentée, ou s'il s'agit d'une fonction built-in.
Nous décrivons ci-dessous les commandes de base relatives à l'installation et l'usage de packages Octave (voir help pkg pour davantage de détails).
pkg list {package}
Cette commande affiche la liste des packages installés. Outre le nom de chaque package, on voit si ceux-ci sont chargés (signalé par *) ou non, leur numéro de version et leur emplacement. On peut se limiter à l'affichage des informations relatives à un package en spécifiant son nom.
Avec [USER_PACKAGES, SYSTEM_PACKAGES]=pkg('list') on stocke sur 2 tableaux cellulaires la liste et description des packages installés respectivement de façon locale (utilisateur courant) et globale (tous les utilisateurs de la machine)
pkg list -forge
Affiche la liste des packages Octave disponibles sur SourceForge (nécessite connexion Internet)
pkg describe {-verbose} package(s)
Affiche une description du(des) package(s) spécifié(s).
Avec l'option -verbose, la liste des fonctions du package est en outre affichée.
news package
Affiche le document release notes du package spécifié (i.e. les nouveautés apportées par chaque version)
pkg load|unload package(s)
Cette commande charge, respectivement décharge, le(s) package(s) spécifié(s). De façon interne le chargement, qui rend "visibles" les fonctions du package, consiste simplement à ajouter au path Octave l'emplacement des fichiers du package.
Notez que le chargement d'un package peut engendrer le chargement automatique de package(s) dépendant(s).
a) pkg install {...} -forge package(s) b) pkg install {-local|-global} {-verbose} package-version.tar.gz c) pkg install {...} url
a) Installe le(s) package(s) spécifié(s) en le(s) téléchargeant directement depuis SourceForge (nécessite connexion Internet) b) Installe le package spécifié à partir du fichier package-version.tar.gz préalablement téléchargé c) Installe le package à partir de l'url spécifiée (se terminant pas .tar.gz)
• Si Octave a été démarré en mode super utilisateur (avec sudo octave sous Linux ou macOS), le package est installé par défaut de façon globale (i.e. pour tous les utilisateurs de la machine), à moins de spécifier l'option -local. Si Octave a été démarré depuis un compte non privilégié, l'installation s'effectue par défaut pour l'utilisateur courant (i.e. déposé dans le dossier octave se trouvant dans le "profile" de l'utilisateur), à moins de spécifier l'option -global. Dans le "profile" également, un fichier .octave_packages répertorie les packages locaux de l'utilisateur.
• L'option -verbose est utile pour mieux comprendre ce qui se passe quand l'installation d'un package pose problème.
• L'option -auto n'existant plus depuis Octave 4.2, le package doit ensuite être chargé (manuellement ou via le prologue .octaverc) pour être utilisé
Notez que la plupart des packages étant écrits en C/C++, leur installation par cette procédure requiert la présence d'outils de compilation (p.ex. MinGW sous Windows, Apple XCode sous macOS...)
pkg test package
Teste toutes les fonctions du package spécifié
pkg uninstall package(s)
Désinstallation du(des) package(s) spécifié(s)
pkg update
Tente de mettre à jour l'ensemble des packages à partir de SourceForge (nécessite connexion Internet)
pkg rebuild
Reconstruction de la base de donnée des packages à partir des répertoires de packages trouvés dans l'arborescence d'installation. Opération nécessaire par exemple si l'on a déplacé le dossier d'installation Octave.
Quelques remarques finales concernant le packaging Octave sous GNU/Linux :
le package communément appelé "octave" proposé sur les dépôts (repositories) des différentes distributions Linux (Debian, Ubuntu, RedHat, Fedora...) ne contient plus que le Octave core (noyau Octave), donc sans les extensions/packages Octave-Forge (voir chapitre "Installation de Octave-Forge sous GNU/Linux")
dans la mesure où vous n'avez pas installé Octave vis un dépôt alternatif (PPA), avant de tenter d'installer des "packages Octave" selon la technique décrite ci-dessus, commencez par voir si le dépôt de votre distribution GNU/Linux ne propose pas le(s) package(s) que vous cherchez, sous le nom "octave-package" (c'est le cas de l'architecture Octave sous Ubuntu depuis Ubuntu 9.04)