FLASH INFORMATIQUE FI



GNU Octave, l’alternative libre à MATLAB


Cet article a pour objectif de vous expliquer brièvement ce qu’est GNU Octave par rapport à MATLAB, quelle a été son évolution ces dernières années, et comment vous pouvez l’installer et l’utiliser librement sur votre machine.



This article aims to briefly explain what is GNU Octave with respect to MATLAB, how it has evolved in recent years, and how you can freely install and use it on your machine.


Jean-Daniel BONJOUR


Fiche descriptive


Qu’est-ce que GNU Octave  ?

En matière de calcul numérique/scientifique, analyse et visualisation de données, le logiciel MATLAB est devenu ces dernières années incontournable dans de nombreuses disciplines. Son succès tient en particulier à l’approche très aisée, pour des non-informaticiens, de son langage interprété, son efficacité dans la manipulation de données (tableaux à N-dimensions, fonctions I/O), le grand nombre de fonctions disponibles (vectorisées pour la plupart), ses possibilités graphiques étendues (2D, 3D, animation) et son extensibilité (toolboxes). C’est cependant un logiciel commercial coûteux, ce qui représente un certain obstacle à son utilisation généralisée dans l’enseignement.
Nous avons décrit, dans un précédent article, les origines et possibilités du logiciel libre GNU Octave. La bonne nouvelle c’est qu’il s’est affirmé, au cours de ces dernières années, comme une véritable alternative libre à MATLAB, offrant aujourd’hui, à un degré plus élevé que tout autre logiciel, une très bonne compatibilité avec MATLAB. Cette exigence est du reste au centre des préoccupations des développeurs du noyau Octave (Octave Core). Devenue beaucoup plus modulaire en 2007 (version 2.9.12), l’architecture d’Octave permet en outre d’étendre ses fonctionnalités par un mécanisme de paquets analogue aux toolboxes MATLAB. Ceux-ci sont distribués via la plate-forme SourceForge (d’où leur nom de packages Octave-Forge), et on en dénombre aujourd’hui 92] ! La modularité de GNU Octave se traduit également par une pluralité de moteurs graphiques (back-ends) : FLTK/OpenGL, Gnuplot, Octaviz, epsTK...
Dans une récente interview, Jordi Gutiérrez (l’un des principaux développeurs d’Octave) résume bien la situation de GNU Octave par rapport à MATLAB :
« Octave is a free numerical environment mostly compatible with Matlab. The idea is to liberate all of the code written for Matlab and make it run in Octave with as little modification as possible ; optimally, with no modification. This is a very difficult task, because Matlab is a moving target and its language keeps changing. We’re always going to be at least a little behind Matlab’s changes. In a few cases historically we have implemented a feature before Matlab, but then Matlab implemented it in a slightly different way from us. This makes it very difficult to innovate too much at the language level, so we are fairly conservative about it. »

Quel intérêt y a-t-il à utiliser GNU Octave  ?

Nous disposons à l’EPFL, depuis plusieurs années, d’une licence de site MATLAB couvrant les besoins d’enseignement et recherche, autorisant également l’installation et utilisation sur les machines des collaborateurs (logiciel distribué via Distrilog). Depuis le début de cette année, ce contrat a été élargi pour permettre l’installation sur les machines personnelles des étudiants EPFL (distribution via le site Web Poseidon [1]).
Quelles sont alors les raisons de préférer GNU Octave à MATLAB  ?

  • vous souhaitez développer des programmes/scripts ou fonctions dans le langage MATLAB/Octave et les utiliser/diffuser dans un contexte hors-EPFL (par exemple collaboration externe avec un partenaire ne désirant pas acquérir une licence MATLAB) ;
  • parvenu à la fin de vos études ou de votre thèse, vous allez bientôt quitter l’EPFL ; vous n’aurez alors plus le droit d’utiliser la licence MATLAB EPFL ;
  • vous participez à un MOOC (Massive Open Online Course) s’appuyant sur GNU Octave [2] (la plupart des ces cours font majoritairement usage de logiciels libres  !) ;
  • vous souhaitez déployer un environnement de type MATLAB sur un cluster ou dans le cadre d’une grille de calcul, mais sans subir les inconvénients d’un logiciel propriétaire (acquisition et gestion de licences, coûts...) ;
  • GNU Octave remplit pleinement vos exigences, et vos éventuels besoins en matière de toolboxes sont satisfaits par les packages Octave-Forge ;
  • last but no least, vous êtes attachés aux valeurs du libre [3] et souhaitez éviter les solutions privatives (piège du lock-in)  !

Nouveautés des dernières versions d’Octave

Depuis notre dernier article dans le Flash Informatique (nous décrivions alors de la version 2.1.73), GNU Octave a bénéficié de grandes avancées :

  • Version 2.9 (2006-2007) (version de développement, pré-release de la 3.0) : GNU Octave devient modulaire par une claire séparation entre le noyau Octave Core et les packages Octave-Forge, installables individuellement par l’utilisateur (commande Octave pkg install -forge package) ; nouvelle architecture graphique offrant une bien meilleure compatibilité avec MATLAB (support des graphic handles, des couleurs RGB, largeurs de lignes...) ; fonctions relatives aux sparse matrices ; interface de compilation des mex-files MATLAB (bien que les oct-files restent plus efficaces dans le monde Octave) ; transformation des variables built-in en fonctions (p.ex. warnings...) ; meilleure gestion du path de recherche ;
  • Version 3.0 (2008) : officialisation des grands changements initiés dans la version 2.9 ; apparition des types integer 8/16/32 bits ; implémentation de la commande print (sauvegarde de fichiers graphiques) ; premier packaging Octave Windows stand-alone intégrant l’environnement de compilation libre C++ MinGW (permettant de s’affranchir des outils Microsoft MSVC pour installer des packages, compiler des oct-/mex-files) ;
  • Version 3.2 (2009) : nombreuses nouvelles fonctions graphiques ; apparition du type réel single precision (32 bits) et du type integer 64 bits ; fonctions de lecture/écriture d’images (imwrite, imread) ; fonctions avancées de debugging (dbstop, dbclear, dbstatus) ; apparition de possibilités de programmation orientée objet (classes, méthodes, héritage...) ; commentaires bloc # commentaire multi-ligne # ; améliorations de performance (indexation des tableaux, recherche, tri...), meilleure gestion de la mémoire ;
  • Version 3.4 (2011) : le nouveau back-end graphique multi-plate-forme basé FLTK/OpenGL (expérimental sous Octave 3.2) parvient à maturité, offrant un haut degré de support des graphic handles et permettant de réaliser des animations ; nombreuses nouvelles fonctions (notamment : saveas, uigetdir/uigetfile/uiputfile, fileread/strread/textread/textscan ...) ;
  • Version 3.6 (2012) : fonctions de profiling (profile, profshow, profexplore) ; amélioration de performance dans le traitement des chaînes et tableaux cellulaires de chaînes ; premier aperçu de Octave GUI (future interface-utilisateur graphique standard).

Installation de GNU Octave et des paquets Octave-Forge

Né dans le monde Unix/Linux, GNU Octave a rapidement fait l’objet de nombreux portages sous Windows et MacOSX. Sur ces différentes plates-formes, il existe donc différentes façon d’installer GNU Octave. Nous nous concentrons ici sur les procédures les plus aisées et procurant l’expérience d’utilisation la plus complète.

Installation sous Windows

Le wiki Octave, à l’adresse wiki.octave.org/Octave_for_Windows, présente les différents portages actuels de GNU Octave sous Windows. Si vous utilisez déjà Cygwin [4] , il vous sera alors très aisé d’ajouter, depuis la catégorie Math, les paquets suivants : octave (core), octave-forge (packages) et octave-doc (documentation HTML et PDF). De même que, dans la catégorie Graphics, le paquet gnuplot (back-end graphique).
Dans le cas contraire, vous avez alors le choix entre 2 installeurs distribués par le site SourceForge [5] . Pour ne pas dépendre des outils de développement Microsoft Visual Studio, c’est l’installeur nommé : Octave for Windows MinGW que nous vous recommandons. Et si vous souhaitez encore gagner du temps, utilisez la version que nous avons nous-même repackagée et qui est disponible via notre page d’explications. Elle s’installe par simple déballage d’une seule archive ZIP dans laquelle nous avons intégré :

  • noyau GNU Octave 3.6.2
  • 77 packages Octave-Forge
  • deux back-ends graphiques : celui basé FLTK/OpenGL, et Gnuplot 4.6.0
  • plusieurs variantes des librairies BLAS/ATLAS (optimisées pour différents types de processeurs)
  • compilateur MinGW32 GCC 4.6.2
  • outil Ghostscript 9.0.5, PStoedit 3.60, fig2dev 3.2.5c
  • éditeur Notepad++ 6.1.6
  • documentation PDF et HTML de GNU Octave et Gnuplot

La page susmentionnée vous guide pas à pas dans l’installation et la configuration de cette distribution GNU Octave. Notez que si vous n’installez pas Octave à la racine de votre disque C :\, il sera nécessaire de reconstruire la base de donnée des packages conformément à nos indications. L’auteur de cet article est disponible en cas de question  !
Intégré à cette distribution, l’éditeur libre Notepad++ se prête bien à la programmation GNU Octave/MATLAB (coloriage syntaxique ...).

Installation sous Linux

wiki Octave, présente les procédures d’installation propres aux distributions Linux les plus répandues. S’agissant d’Ubuntu, il faut distinguer les cas suivants :

  1. Vous utilisez une version antérieure à 12.04 LTS : songez à la mettre à jour (11.04 ne sera plus supportée en octobre ; les versions antérieures ne le sont déjà plus, sauf 10.04 LTS qui sera obsolète en avril 2013). En outre, sur ces anciennes versions Ubuntu, GNU Octave n’a plus évolué depuis la version 3.2.4.
  2. Vous utilisez Ubuntu 12.04 LTS (supporté jusqu’en avril 2017) : Hélas la version de GNU Octave proposée par les dépôts officiels Canonical est également la 3.2.4. Il existe cependant un dépôt alternatif proposant GNU Octave Core 3.6.1, mais sans aucun package Octave-Forge. Vous trouvez la procédure d’installation détaillée dans notre page d’explication. Nous y proposons aussi un M-file qui vous permettra ensuite d’installer à la volée une septantaine de packages Octave-Forge.
  3. Vous allez installer Ubuntu 12.10 (disponible le 18 octobre, supporté 18 mois) : vous avez de la chance, le packaging GNU Octave a rattrapé son retard et vous pourrez installer très simplement et de façon standard Octave 3.6.2 ainsi que l’ensemble des packages Octave-Forge avec votre gestionnaire de paquets habituel (ou via l’Ubuntu Software Center). Cette procédure est aussi décrite http://enacit1.epfl.ch/cours_matlab...].

La plupart des éditeurs de programmation sous Linux conviennent à la programmation GNU Octave/MATLAB (coloriage syntaxique...). C’est notamment le cas de Gedit et de l’excellent petit IDE Geany.

Installation sous MacOSX

Le wiki Octave, présente les différentes méthodes d’installation de GNU Octave sous MacOSX. À moins d’être familier des package managers que sont Fink, MacPorts ou Homebrew, nous vous conseillons d’installer le bundle que vous trouvez sur le site SourceForge. Vous constaterez cependant qu’il correspond encore à la version 3.4.0. Il intègre les deux back-ends FLTK et Gnuplot, mais hélas aucun package Octave-Forge. Relativement simple, la procédure d’installation et de configuration complète est décrite sur notre page. La partie la plus fastidieuse est relative à l’installation des outils Apple, à savoir :

  • Serveur X11 XQuartz/X.org (si vous désirez utiliser Gnuplot en mode X11) ;
  • Apple XCode Tools (si vous souhaitez être en mesure d’installer des packages Octave-Forge ou compiler des oct-/mex-files).

L’éditeur standard TextEdit étant une calamité lorsqu’il s’agit de sauvegarder au format texte (!), nous vous recommandons, pour élaborer du code GNU Octave/MATLAB, l’éditeur gratuit TextWrangler (dérivé de BBedit) ou tout autre éditeur de programmation digne de ce nom.

Conseils d’utilisation de GNU Octave

Quelques remarques et conseils pour terminer cette rapide présentation :

  • Les utilisateurs passant de MATLAB à GNU Octave sont surpris par l’austérité de la fenêtre de commande GNU Octave et l’absence d’interface graphique et d’environnement de développement intégré (IDE). Plusieurs solutions tierces ont existé par le passé, la plus connue était QtOctave dont le développement a cessé en été 2011. Sachez cependant que la communauté Octave travaille actuellement sur le développement d’une interface graphique officielle nommée Octave GUI [6] dont vous avez un premier aperçu avec la distribution GNU Octave 3.6.2 Windows MSVS. Cette interface est développée à partir du toolkit graphique libre Qt (à la base du bureau et des applications Linux/KDE, mais aussi multi-plate-forme), ce qui devrait permettre également l’élaboration d’applications Octave dotées d’interfaces graphiques modernes. Dans l’attente, on peut utiliser les fonctions de widgets ui* ainsi que, sous GNU Octave, celles du package zenity.
  • Si vous hésitez entre le moteur graphique traditionnel Gnuplot et le nouveau back-end FLTK/OpenGL, nous vous conseillons clairement le second. S’il n’est pas défini comme le back-end par défaut, introduisez la commande graphics_toolkit(’fltk’) dans votre prologue utilisateur (fichier .octaverc dans votre répertoire Octave par défaut).
  • Si vous devez installer des packages Octave-Forge, et pour autant qu’ils ne soient pas pré-packagés dans le cadre de votre distribution Linux ou Cygwin, vous effectuerez cela au sein de Octave à l’aide de la commande pkg [7].
  • Que vous utilisiez GNU Octave ou MATLAB, efforcez-vous d’écrire du code qui soit portable d’un logiciel à l’autre. N’utilisez pas délibérément des spécificités propres à l’un ou l’autre de ces langages, ou isolez-le (code conditionnel).

Quelques liens utiles

Sites de base

Pour débuter dans l’utilisation de GNU Octave ou MATLAB :

Autres

Autres environnements libres de calcul numérique/scientifique

Avant de conclure, nous souhaitons encore mentionner les principaux autres environnements de calcul scientifique libres :

  • Python : ce langage de script rencontre actuellement un succès considérable et séduit de plus en plus les scientifiques par son très riche environnement multi-plate-forme de calcul et visualisation SciPy (Scientific Python) qui s’appuie notamment sur :
    • NumPy : extension de Python pour manipuler des tableaux/matrices
    • MatPlotLib : librairie graphique 2D
    • MayaVi : librairie de visualisation 3D
    • Spyder : environnement de développement (IDE) Sous Linux, chaque outil fait l’objet d’un package (python-scipy, python-numpy, python-matplotlib, mayavi2, pythopn-spyderlib). Pour les usagers Windows : un paquetage WinPython portable intègre tous ces outils et facilite l’installation.
  • Scilab : d’origine française (INRIA), c’est un logiciel multi-plate-forme très évolué dont les possibilités sont similaires à MATLAB/Octave, mais qui n’est pas compatible (fortes différences de syntaxe).
  • FreeMat : ce clone multi-plate-forme de MATLAB est doté d’une interface graphique très agréable, mais il est passablement plus limité que GNU Octave (n’implémente qu’un sous-ensemble des fonctions core et pas de packages...). Après une certaine stagnation ces 2 dernières années, ce projet libre semble redémarrer...
  • Sage : disponible uniquement sous Linux et MacOSX (ou LiveCD), il s’agit un environnement de calcul numérique et symbolique constitué d’une centaine d’outils (y.c. GNU Octave et Maxima) accédés via une interface Python unifiée.
  • R : déjà présenté dans ce journal  [8], il s’agit d’un logiciel de statistiques, mais sa grande richesse en fait aussi un outil de calcul et visualisation scientifique.


 
  Article du FI-EPFL 2012 sous licence CC BY-SA 3.0 / J.-D. Bonjour

[1] Voir l’article de REPOND Nicolas. Les logiciels mathématiques pour les étudiants. FI 6/2012

[2] Par exemple le cours Machine Learning de l’Université de Stanford, suivi l’an dernier par 104’000 étudiants (!) et ré-édité cet automne, se base sur GNU Octave

[3] Voyez notre article La logithèque libre de l’étudiant et du chercheur. FI 6/2012. et l’Annuaire EPFL des principaux logiciels libres

[4] Cygwin, API d’émulation POSIX (Linux, Unix, BSD) pour Windows

[5] Installeurs GNU Octave sur SourceForge

[6] Voir wiki.octave.org/FAQ#GUI ainsi que planet.octave.org/octconf2012/gui.pdf

[7] Installation et gestion de packages au sein de GNU Octave

[8] SCHÜTZ, Frédéric. R, un logiciel libre pour l’analyse de vos données. FI 4/2012.
REZZONICO, Vittoria. Graphiques avec R. FI 5/2012.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.