Octave 4.0 est disponible

Posté par  (site web personnel, Mastodon) . Édité par bubar🦥, ZeroHeure, Stéphane Aulery et teoB. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
45
1
juin
2015
GNU

Le 29 mai dernier, GNU a sorti une nouvelle version de son logiciel Octave, près de 8 ans après la précédente v3. GNU Octave est un logiciel libre de calcul numérique, dont le langage accepte de nombreuses constructions de la bibliothèque standard du C, qui peuvent être étendues sur Unix, et propose l'usage de fonctions écrites en C++. Il peut fonctionner avec les nombres réels et les nombres complexes. Des fonctionnalités de tracés graphiques sont directement intégrées au langage.

La version 4.0, version majeure, apporte une liste impressionnante de nouveautés : interface graphique, programmation orientée-objet, meilleure compatibilité avec Matlab, nouvelles fonctionnalités, ré-écriture de fonctions, …

logo Octave

GNU Octave est comparable à MATLAB, et dispose d'une syntaxe très proche. Il présente une sérieuse alternative, largement utilisée. Octave est écrit en C++, et dispose d’un moteur intégré de rendu graphique (basé sur OpenGL).

  • Interface graphique Qt complète et riche en possibilités de configurations ; Octave 4 sur Fedora 22
  • Octave utilise désormais OpenGL par défaut pour les graphiques, grâce aux widgets Qt  ;
  • Support du rendu offscreen (ex: impression du rendu sans l'avoir affiché) ;
  • Mode Editeur sans gui octave4 --no-gui capable de lancer boites & widgets Octave Qt ;
  • Mode Editeur en ligne de commande octave4-cli ;
  • Mode minimaliste --no-gui-libs utilisant l'ancien fltk, également disponible.

  • Définitions de mots clés pour la programmation orientée objets :

    • classdef endclassdef,
    • enumeration endenumeration,
    • events endevents,
    • methods endmethods,
    • properties endproperties.
  • Les fonctions fliplr flipud rot90 rectint supportent les tableaux à N dimensions ;

  • Xor supporte maintenant les réductions cumulatives ;

Exemple Octave 4

  • Remplacement de fonctions (interp2 remplace l'ex bicubic. individual preference get/set routines : ex dump_prefs. dir_in_loadpath : ex find_dir_in_path. isfinite : ex finite. glob ou regexp : ex fnmatch. sylvester : ex syl. etc..)
  • Fonctionnalités spécifiques à l'audio (audiodevinfo, audioread, sound, audioinfo, audiorecorder, soundsc, audioplayer, audiowrite)

  • de nombreuses évolutions & nouveautés, parmis lesquelles :

    • annotation,
    • bandwidth,
    • cubehelix,
    • jit_failcnt,
    • metaclass,
    • numfields,
    • ordschur,
    • pan,
    • qmr,
    • rotate3d,
    • sylvester,
    • zoom,
    • (..)

D'autres solutions open source existent, comme Scilab, mais nettement moins compatible avec Matlab, ou SciPy, extension du langage Python (existe aussi via EPD/Canopy et non compatible avec Matlab). GNU Octave fait un bond, cette version 4 va sans nul doute ravir les scientifiques parmis nous, universitaires, institutionnels ou industriels.

Aller plus loin

  • # Matlab compiler

    Posté par  . Évalué à 4.

    Existe t-il un module de génération de code / librairies pour octave ?

    Matlab vend une boite a outils nommées Matlab Compiler pour cela.

    • [^] # Re: Matlab compiler

      Posté par  . Évalué à 2.

      • [^] # Re: Matlab compiler

        Posté par  . Évalué à 2.

        "Des fonctions écrites en C++ peuvent être utilisées dans l'environnement Octave. Le fichier source porte l'extension '.cc', car écrit en C++ et la fonction compilée à l'aide de mkoctfile porte l'extension '.oct'. Ceci permet de travailler avec l'environnement souple d'Octave tout en ayant la vitesse d'exécution d'un programme compilé."

        Source : http://fr.wikipedia.org/wiki/GNU_Octave

        • [^] # Re: Matlab compiler

          Posté par  . Évalué à 4.

          Bonjour,

          Si l'on se fie à la description des "Key features" de la toolbox Matlab Compiler, le principal intérêt est de pouvoir faire tourner du code Matlab sur des postes ou ce dernier n'est pas installé sans avoir à racheter une licence.
          En détails:
          - "Royalty-Free Sharing with Colleagues and Customers": cette fonctionnalité est intrinsèquement présente dans Octave qui est un logiciel libre
          - "Sharing MATLAB Programs as Standalone Applications": il est possible (et il y a des exemples dans la doc) de créer des application indépendantes, en C++, qui embarquent les classes d'Octave pour l'analyse numérique, voire même l'interpréteur de langage Octave.
          - "Apps for Packaging Your MATLAB Programs Interactively": non implémenté
          - "Sharing MATLAB Programs with Excel Users": non implémenté

          En bref, je crois qu'en pratique cette toolbox n'a de sens que parce que Matlab est un logiciel propriétaire :-)

          @PolePosition: les fichiers .oct sont l'équivalent Octave des fichiers .mex de Matlab. Il permettent de programmer, en c++, des fonctions que l'on pourra utiliser dans l'interpréteur de la même manière que des fonctions écrites en langage Octave/Matlab. Avantages: rapidité et possibilité d'utiliser des librairies tierces.

          • [^] # Re: Matlab compiler

            Posté par  . Évalué à 3.

            Dans mon boulot, on génère du code C avec la toolbox "Embedded Coder" (donc ce n'est pas exactement pareil, puisque c'est de modèles Simulink qu'on part, et pas de code Matlab), mais j'imagine mal qu'on embarque dans le satellite une partie du code de Matlab (ou d'Octave) pour qu'il interprète les modèles.

            Ce n'est pas vraiment la même chose de prendre du code Matlab/Octave, d'en générer un code C qui est transformé en binaire qui ne fait que ça, ou de prendre un binaire qui interprète du code Matlab/Octave et de lui donner un script Matlab/Octave à exécuter. J'ai l'impression (je peux me tromper) que le second risque de prendre un peu plus de place.

            Tous les nombres premiers sont impairs, sauf un. Tous les nombres premiers sont impairs, sauf deux.

  • # Générer du code pour une cible

    Posté par  . Évalué à 2.

    D'après une recherche sur internet, il semble que Octave ne permette pas de générer du code puis envoyer ce code sur une cible (embedded code to a specific target).

    Matlab fait ça, pour pas mal de micro contrôleurs.

    Octave ne vise pas cette fonctionnalité ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.