• Aucun résultat trouvé

Cours MATLAB et GNU Octave en pdf

N/A
N/A
Protected

Academic year: 2021

Partager "Cours MATLAB et GNU Octave en pdf"

Copied!
137
0
0

Texte intégral

(1)

MATLAB & GNU Octave

Table des matières

Avant-propos

0 Installation & configuration de Octave 1 Notions de base

1.1Introduction

1.2Octave-Forge vs. MATLAB 1.3Démarrer, quitter, prologues, IDE 1.4Aide, démos, liens Internet

1.5Types de nombres, variables, fonctions

1.6Fenêtre de commandes, copier/coller, formatage nombres 1.7Packages Octave-Forge

2 Workspace, environnement, commandes OS 2.1Workspace, journal, historique

2.2Environnement, path de recherche 2.3Commandes en liaison avec OS

3 Constantes, opérateurs et fonctions de base 3.1Scalaires, constantes

3.2Opérateurs de base (arith., relationnels, logiques) 3.3Fonctions de base (math., logiques)

4 Types : vecteurs/séries, tableaux nD, chaînes, structures, tableaux cellulaires, maps 4.1Séries (ranges)

4.2Vecteurs 4.3Matrices

4.4Opérateurs matriciels

4.5Fonctions matricielles (réorganis., calcul, stat., recherche, logiques) 4.6Indexation logique

4.7Chaînes de caractères 4.8Tableaux multidimensionnels 4.9Structures (enregistrements) 4.10Tableaux cellulaires (cell arrays) 4.11Maps

5 Autres notions diverses 5.1Dates et temps, timing 5.2Equations non linéaires

6 Graphiques 2D/3D, images, animations 6.1Concepts de base 6.2Graphiques 2D 6.3Graphiques 2D½ et 3D 6.4Traitement d'image 6.5Sauvegarder et imprimer 6.6Handle Graphics 6.7Animations, movies

7 Programmation : éditeurs, interaction, structures de contrôle, scripts & fonctions, entrées-sorties, debugging & profiling

7.1Généralités

7.2Éditeurs de programmation

7.3Interaction écran/clavier, warnings/erreurs 7.4Structures de contrôle

7.5Scripts, mode batch 7.6Fonctions

7.7Autres commandes de programmation 7.8Entrées-sorties formatées, fichiers 7.9Publier un code

7.10Debugging, profiling, optimisation 8 Interfaces-utilisateur graphiques (GUI) 8.1Fenêtres de sélection de fichiers

8.2Fenêtres de dialogue standards 8.3Programmation GUI

© CC-BY-SA 4.0 Jean-Daniel.Bonjour@epfl.ch ENAC-IT & ENAC-SSIE & ENAC-SGC

(2)

9/14/2018

MATLAB et GNU Octave-Forge - Avant-propos

https://enacit1.epfl.ch/cours_matlab/bienvenue.shtml

1/1

Introduction à MATLAB et GNU Octave

par Jean-Daniel BONJOUR, © 1999-2018 CC-BY-SA 4.0

Service Informatique ENAC-IT & Section des Sciences et ingénierie de l'environnement (SSIE) Faculté ENAC, EPFL, CH-1015 Lausanne

Avant-propos

Mis à jour en été 2018, le présent support de cours se réfère à MATLAB R2018a et GNU Octave 4.4.1 (avec extensions Octave-Forge). Nous nous efforçons de présenter en parallèle ces deux progiciels - le premier commercial, le second libre/open-source - tout en démontrant le haut degré de compatibilité de GNU Octave par rapport à MATLAB, et donc le fait que ce logiciel libre peut être utilisé en lieu et place de MATLAB dans la plupart des situations (en environnement académique notamment).

Accessible sous https://enacit1.epfl.ch/cours_matlab/, ce support de cours sert de base à l'introduction à MATLAB et GNU Octave donnée à l'EPFL par l'auteur aux étudiants de :

- Sciences et ingénierie de l'environnement, Bachelor 3e semestre (ENAC-SSIE) dans le cadre du cours "Informatique pour l'ingénieur"

- Génie Civil, Bachelor 3e semestre (ENAC-SGC) dans le cours "Programmation MATLAB"

Important : les conventions de notations suivantes sont utilisées dans ce support de cours :

en police de caractère à espacement fixe ombré bleu : fonction ou commande MATLAB/Octave à entrer telle quelle ; exemple:

help plot

en italique : vous devez substituer vous-même l'information désignée ; il s'agit en général des paramètres d'une fonction ; exemples:

save nom_fichier

,

plot(x,y)

entre accolades : on désigne ainsi des éléments facultatifs tels que les options d'une commande ou les paramètres d'une fonction ; exemples:

save fichier {-append}

,

pause({secondes})

; ces accolades ne doivent donc pas être saisies ; exception à cette règle: les tableaux cellulaires où les accolades font partie intégrante de la syntaxe MATLAB/Octave caractère barre verticale : désigne un choix ; exemple:

grid ('on|off')

indiquant les deux usages possibles

grid('on')

et

grid('off')

encadré de bleu : touche de clavier (ou combinaison de touches) ou bouton de souris ; exemples:

enter

,

ctrl+C

,

curseur-haut

,

double-clic

,

clic-droite

texte ombré de gris : choix dans un menu d'interface graphique ; exemple: File > Save as

également ombré de gris mais encadré : bouton d'interface graphique ; exemple: Save

En règle générale toutes les instructions décrites dans ce support de cours s'appliquent à la fois à MATLAB et à GNU Octave. Dans le cas contraire, ou pour définir certaines spécificités, on utilisera les symboles suivants :

indique que la fonctionnalité présentée n'est disponible que sous MATLAB indique que la fonctionnalité est propre à GNU Octave,

avec respectivement les backends graphiques basés Qt/OpenGL, FLTK/OpenGL ou Gnuplot signale une fonctionnalité pas encore disponible ou buguée

Lorsqu'une fonction est implémentée dans une toolbox MATLAB, respectivement un package GNU Octave-Forge, nous le signalons de la façon suivante :

[M: toolbox] indique que la fonction est offerte par la toolbox MATLAB indiquée [O: package] indique que la fonction est offerte par le package Octave-Forge indiqué

exemple:

imcrop(image)

[M: image processing][O: image] : fonction disponible via la toolbox MATLAB "image processing" et le package Octave-Forge "image"

Finalement, par le signe on met en évidence des fonctions et notions essentielles MATLAB/Octave que l'étudiant, dans une première approche de cette matière, devrait assimiler en priorité.

Ce support de cours existe aussi sous forme de fichier PDF (voir le lien dans le menu ci-contre), mais celui-ci n'est pas mis à jour aussi fréquemment que la version web.

L'auteur reçoit très volontiers toutes vos remarques concernant ce support de cours (corrections, propositions de

compléments...) qui peuvent lui être directement adressées par email → jean-daniel.bonjour@epfl.ch. D'avance un grand merci de votre feedback !

(3)

0. Installation et configuration de GNU Octave

et des packages Octave-Forge

Cette page s'adresse à toute personne (étudiant, enseignant, chercheur...) souhaitant installer sur sa machine le logiciel libre GNU Octave et ses extensions Octave-Forge qui constituent le seul environnement de calcul scientifique/numérique et visualisation entièrement compatible avec MATLAB ("clone" MATLAB).

0.1 Avant-propos

Les étudiants peuvent généralement se procurer sur leur campus une licence personnelle "MATLAB Student Version" (DVD d'installation de MATLAB, Simulink avec quelques toolboxes, vendu au prix de CHF 120.- environ) permettant l'installation de MATLAB sur leur machine privée et l'utilisation dans le cadre de leurs études. À l'EPFL cela est même possible sans bourse délier, l'école finançant la licence couvrant ce type d'usage. Mais pour les adeptes du "logiciel libre", GNU Octave représente actuellement la meilleure alternative libre/open-source à MATLAB, donc utilisable gratuitement sans restriction, et permettant de participer à sa communauté de développement.

Il existe encore d'autres logiciels libres dans le domaine du calcul scientifique, mais non compatibles avec MATLAB (autre syntaxe, donc code MATLAB non réutilisable tel quel). Ces alternatives sont mentionnées au chapitre "Qu'est-ce que MATLAB et GNU Octave ?".

GNU Octave se compose d'un noyau de base (Octave Core, https://www.gnu.org/software/octave/) ainsi que d'extensions implémentées sous la forme de packages (concept analogue aux toolboxes MATLAB) distribués via la plateforme SourceForge (https://octave.sourceforge.io/). Nous décrivons ci-après son installation sur les trois systèmes d'exploitation principaux :

GNU/Linux Windows macOS

Concernant l'évolution des différentes versions de GNU Octave, vous pouvez utiliser le menu News > Release Notes ou la commande

news

qui affichent les dernières "release notes". Vous pouvez également voir ici :

versions majeures (apportant de nouvelles fonctionnalités) : 4.0.0 | 4.2.0 | 4.4.0 versions mineures (correction de bugs) : voir ici

0.2 Installation de Octave sous GNU/Linux

0.2.0 Généralités concernant Octave sous GNU/Linux

Octave étant né dans le monde Unix, son installation sous Linux est très simple. Il est en effet "packagé" pour la plupart des distributions Linux (paquets *.deb, *.rpm...), et il en est de même pour Gnuplot (ancien backend graphique de Octave) ainsi que d'autres outils annexes, tous distribués via les "dépôts" (repositories) standards de ces distributions.

De façon générale, les étapes de base d'installation de Octave sous Linux sont "classiques" et consistent donc à installer, au moyen du "gestionnaire de paquets" de votre distribution (

apt

sous Debian et dérivés tels que Ubuntu,

yum

sous RedHat et Fedora...), le noyau de base Octave (paquet

octave

et ses dépendances), puis les packages Octave-Forge dont vous avez besoin

(généralement packagés sous le nom

octave-package

), et optionnellement

gnuplot

(qui vient en général automatiquement en dépendance de

octave

). Il est aussi possible de compiler/installer des packages Octave-Forge au sein même de Octave (voir chapitre "Packages Octave-Forge").

Pour un aperçu des portages Octave sur les différentes distributions Linux, voyez le wiki Octave. La distribution la plus utilisée dans notre faculté étant Ubuntu, c'est sur celle-ci que nous nous concentrons dans le chapitre qui suit.

0.2.1 Installation et configuration de Octave sous Ubuntu

Introduction

On présente ci-après 2 approches distinctes d'installation de GNU Octave sous Ubuntu :

A. Installation basée sur les dépôts standards de Canonical (éditeur de Ubuntu) : méthode la plus simple, mais n'offrant par forcément la version la plus récente de Octave (selon la version de Ubuntu)

B. Installation basée sur le dépôt alternatif (PPA) actuellement géré par Mike Miller : méthode offrant généralement la version la plus récente d'Octave, mais nécessitant de compiler soi-même certains packages Octave-Forge

S'agissant des packages Octave-Forge, vous trouvez la liste et description de ceux-ci sous https://octave.sourceforge.io/packages.php.

(4)

9/14/2018

GNU Octave - 0. Installation et configuration de GNU OCTAVE-Forge

https://enacit1.epfl.ch/cours_matlab/octave.shtml

2/5

Selon la version de Ubuntu (en ne citant ici que les releases actuellement supportés), on dispose des versions suivantes de Octave : Ubuntu 14.04 LTS (Trusty Tahr) : Octave 3.8.1, backends FLTK et Gnuplot 4.6.4, Octave-GUI beta

Ubuntu 16.04 LTS (Xenial Xerus) : Octave 4.0.0, backends Qt, FLTK et Gnuplot 4.6.6, Octave-GUI Ubuntu 18.04 LTS (Bionic Beaver) : Octave 4.2.2, backends FLTK et Gnuplot 5.2.2, Octave-GUI Remarque : la version 4.0 de GNU Octave est apparue avec la version 15.10 (Wily Werewolf) de Ubuntu.

Installation en ligne de commande

Procédure d'installation de base sous Linux/Ubuntu :

1. Installation du noyau de base Octave :

sudo apt install octave

Cela installe : Octave Core, Octave GUI, documentation au format PDF (package

octave-doc

), backends graphiques Qt/OpenGL, Gnuplot (package

gnuplot-qt

) et FLTK/OpenGL (redirigeant vers Gnuplot).

2. Installation de la documentation Octave aux formats HTML et info :

sudo apt install octave-htmldoc

octave-info

3. Pour installer ensuite les packages Octave-Forge dont vous avez besoins, nous vous recommandons ceux qui sont déjà "packagés" au niveau de l'OS par Debian/Canonical (c-à-d. offerts par les dépôts Canonical), l'avantage étant que les paquets dépendants (au niveau Linux et/ou Octave) seront automatiquement installés !

Nous vous suggérons ainsi l'installation de la sélection de packages suivante en passant cette commande (en une seule ligne) :

sudo apt install octave-communications octave-communications-common

octave-data-smoothing octave-divand octave-fpl octave-general octave-geometry octave-image octave-io

octave-linear-algebra octave-ltfat octave-ltfat-common octave-mapping octave-miscellaneous

missing-functions mpi msh nan netcdf nurbs

octclip odepkg optim optiminterp parallel signal

sockets sparsersb specfun splines statistics stk

octave-strings octave-struct octave-tisean octave-tsa octave-zenity

Remarque concernant le packaging Octave Debian/Canonical : les commandes de base, à passer dans un shell Linux (et non pas dans la fenêtre de commandes Octave), sont :

lister les packages Octave-Forge disponibles dans les dépôts Canonical :

apt-cache search octave-forge

ou liste plus large de tous les paquets de l'OS relatifs à Octave :

apt-cache search ^octave-

(i.e. paquets dont le nom commence par

octave-

)

pour afficher les informations relatives à un package donné :

apt-cache show octave-package

pour l'installation proprement dite du package :

sudo apt install octave-package

Si le package Octave-Forge dont vous avez besoin n'est pas "packagé" par Debian/Canonical ou qu'il est offert dans une version trop ancienne, il vous faut aller le chercher à la source (SourceForge) et le compiler/installer vous-même au sein de Octave. Pour cela (voir aussi chapitre "Packages Octave-Forge") :

commencer par installer les header-files Octave et de l'outil mkoctfile :

sudo apt install liboctave-dev

puis installation proprement dite du package en démarrant d'abord Octave en mode super-utilisateur avec :

sudo octave

puis en passant la commande Octave :

pkg install -forge package

(où package ne doit ici pas être précédé de

octave-

)

B) Installation basée sur un dépôt alternatif (PPA)

Ce dépôt ne semble plus supporter Ubuntu ≥ 17.10. Pour des versions Ubuntu inférieure :

Afficher les explications ...

C) Installation basée sur Flatpack

Pour davantage d'information sur ce packaging (que nous n'avons pas testé), regardez cette page.

Puis configuration de Octave sous Linux et autres remarques

a. Si vous utilisez le backend Gnuplot et que la barre d'icônes est absente au haut de la fenêtre graphique, introduisez, dans votre prologue Octave

~/.octaverc

, la commande :

setenv('GNUTERM','wxt')

b. Ce point n'est utile que si vous utilisez Octave-CLI (Octave en mode commande dans une fenêtre terminal) : l'éditeur de M-files configuré par défaut étant emacs, si vous souhaitez plutôt utiliser Gedit (éditeur de texte standard sous GNOME), il vous faut :

introduire, dans votre prologue Octave

~/.octaverc

, la commande :

EDITOR('gedit')

activer la coloration syntaxique avec: View > Highlight Mode > Scientific > Octave

nous vous recommandons d'installer les plugins Gedit et configurer proprement cet éditeur (voir nos "Conseils relatifs à l'éditeur Gedit sous Linux")

0.2.2 Anciennes versions de Octave pour Linux

On fournit ici pour mémoire les liens vers les descriptions et documentations d'installation d'anciennes versions Octave : packaging Octave 3.6.1 de Sam Miller pour Ubuntu 12.04 | packaging Octave 3.6.4 de Mike Miller pour Ubuntu 10.04 à 12.10 | packaging Octave 3.8.x Debian/Canonical pour Ubuntu 13.04, 13.10, 14.04 | packaging Octave 4.0.0 de Mike Miller pour Ubuntu 14.04 à 15.04 |

(5)

0.3 Installation de Octave sous Windows

0.3.0 Généralités sur les différentes distributions Octave sous Windows

Le développement de Octave a démarré sous Unix, et la plateforme de développement principale est, aujourd'hui encore,

essentiellement Linux. Octave a cependant fait l'objet de nombreux "portages" sous Windows : d'abord sous l'environnement libre d'émulation Linux Cygwin, puis compilé sous Microsoft Visual Studio C++, ensuite avec l'environnement de compilation libre MinGW/gcc (Minimalist GNU for Windows) (2009), pour déboucher en 2014 sur un environnement de build unifié Octave MXE. C'est la raison pour laquelle on trouve plusieurs paquets et méthodes d'installation Octave.

L'état des différents portages binaires de Octave sous Windows est décrit sur le wiki Octave. La situation actuelle est la suivante (été 2018) :

A. Le nouvel environnement de build cross-platform appelé Octave MXE a vu le jour en 2013 et débouché sur la première distribution binaire Octave 3.8 MXE pour Windows en 2014, puis Octave 4.x MXE dès 2015. C'est celle-ci que nous vous recommandons et dont nous décrivons l'installation au chapitre suivant.

B. Le portage "traditionnel" basé Cygwin que l'on installe ainsi : installer Cygwin (intégrant le compilateur C++ gcc)

ensuite soit installer les différents packages binaires Octave pour Cygwin

soit télécharger les packages sources de Octave et les compiler soi-même (technique nécessitant du temps, des compétences et davantage d'espace-disque)

À moins que vous utilisiez déjà Cygwin, nous ne vous recommandons pas cette méthode.

Avec l'avènement de Octave MXE, le développement des 2 distributions Octave traditionnelles pour Windows, qui étaient diffusées via la plateforme open-source SourceForge.net, est arrêté depuis 2013. SourceForge se limite donc aujourd'hui à la distribution des packages Octave-Forge (ou voir ici).

0.3.1 Caractéristiques, installation et configuration de Octave 4.4.1 MXE pour

Windows

Caractéristiques

Cette distribution d'Octave, qui date du 11.8.2018, intègre les composants suivants : noyau GNU Octave 4.4.1

46 packages Octave-Forge pré-embarqués

interface graphique Octave GUI basée sur le framework/toolkit Qt5 5.11.0.0 , comprenant les fenêtres : commande, historique, browser de dossiers/fichiers, workspace, éditeur/debugger, documentation

trois backends graphiques :

backend graphique basé sur la librairie Qt et OpenGL, devenant depuis Octave 4.0 le moteur graphique par défaut backend basé sur le toolkit FLTK (Fast Light Toolkit) et OpenGL

backend traditionnel Gnuplot 5.2.4

librairies d'algèbre linéaire OpenBLAS et NetLib reference BLAS

outils de compilation MinGW32 GCC 7.2.0 (nécessaires pour l'installation de packages et la compilation de oct/mex-files) Ghostscript 9.16 , Pstoedit 3.70 (conversion PDF/Postscript en différents formats), Fig2dev 3.2.6a (conversion de figures en différents formats), GraphicsMagick 1.3.30

éditeur Notepad++ 6.2.3 (utilisé par Octave CLI seulement) documentation GNU Octave aux formats PDF et HTML

Procédure d'installation

A) Procédure d'installation de base sous Windows :

1. Téléchargez l'installeur depuis notre site miroir, ou depuis la page

https://www.gnu.org/software/octave/download.html (onglet "Windows") en utilisant le lien nommé "octave-4.4.1-w64-installer.exe" (fichier de 238 MB), ou encore depuis ici.

Notez qu'il est aussi proposé des distributions "portables" (archives .zip ou .7z) que nous vous déconseillons d'utiliser, car vous devriez alors notamment créer vous-même les raccourcis de lancement d'Octave et d'accès à la documentation. Il existe par ailleurs une version "w32" (32 bits), qui n'est plus d'actualité pour les machines modernes tournant généralement toutes Windows 64 bits, ainsi qu'une version spécifique "w64-64" pour des machines 64 bits disposant de plus de 32 GB de RAM.

2. Exécutez cet installeur :

Acceptez la licence (GNU General Public License Version 3) Install Options :

- laissez activé "

Install for all users

"

- laissez activé "

Create desktop shortcuts

" (dépôt sur le bureau des 2 raccourcis de lancement "Octave CLI" et "Octave GUI")

- ne laissez activé "

Register .m file type with Octave

", dans le cas où MATLAB est aussi installé sur votre machine, que si vous souhaitez que Octave aie la priorité sur MATLAB pour l'ouverture de M-files

- menu "BLAS library implementation" : laissez activé "

OpenBLAS

"

"Install location" : nous vous suggérons de conserver

C:\Octave\Octave-4.4.1

Cliquez ensuite sur [Install] (=> cela dépose 1.89 GB, 35'602 fichiers)

Au terme de l'installation, l'option "Run GNU Octave" lance Octave GUI, et l'option "Show Readme" ouvre le fichier C:\Octave\Octave-version\README.html

(6)

9/14/2018

GNU Octave - 0. Installation et configuration de GNU OCTAVE-Forge

https://enacit1.epfl.ch/cours_matlab/octave.shtml

4/5

"Octave (GUI)" : lancement de Octave en mode interface graphique "Octave (CLI)" : lancement de Octave en mode commande

"Bash Shell" : ouverture d'une fenêtre Shell Bash "Uninstall" : pour la désinstallation de Octave

un sous-dossier Documentation avec des liens vers les docs suivantes : Octave (HTML), Octave (PDF), Octave C++ Classes (HTML), et Octave C++ Classes (PDF)

4. Au premier lancement de Octave GUI :

il vous informe que les réglages seront enregistrés dans le fichier "C:\Users\username\.config\octave\qt-settings" il vous affiche les dernières informations & nouvelles de la communauté Octave (releases...)

B) Packages embarqués dans cette distribution, installation de packages Octave-Forge supplémentaires :

sous Octave, la commande

pkg list

vous affiche la liste des packages préinstallés dans cette distribution

d'autres packages Octave-Forge peuvent être compilés/installés avec

pkg install -forge package

(voir chapitre "Packages Octave-Forge")

pour utiliser un package, vous devez ensuite le charger avec la commande

pkg load package

C) Définition du dossier de travail de base :

Octave (GUI) et Octave (CLI) démarrent par défaut dans le dossier défini par la variable Windows %USERPROFILE%, ce qui correspond à C:\Users\votre_username. Si cela ne vous convient pas, faites ceci :

- accédez aux Propriétés des 2 raccourcis Octave (GUI) et Octave (CLI) (en cliquant

souris-droite

sur ces raccourcis) - sous l'onglet "Raccourci", dans le champ "Démarrer dans" (Start in), remplacez %USERPROFILE% par le chemin de votre dossier de travail de base (home) où sera aussi recherché votre éventuel prologue de démarrage personnel

.octaverc

- dans les salles ENAC-SSIE et ENAC-SGC nous avons défini

Z:\

Quelques remarques concernant cette version de Octave

a. Le backend graphique ayant fait son apparition sous Octave 4.0 (basé sur la librairie Qt et s'appuyant sur OpenGL) est le backend par défaut.

Si vous désirez utiliser plutôt FLTK/OpenGL ou Gnuplot, il faudra passer la commande

graphics_toolkit('fltk')

ou

graphics_toolkit('gnuplot')

b. Lorsque le répertoire de travail est la racine d'un lecteur Windows (par exemple

Z:\

), les M-files créés au cours de la session ne sont pas directement utilisables (considérés comme s'ils étaient invisibles), et il est nécessaire de relancer Octave pour qu'ils soient accessibles. Pour ne pas souffrir de cet inconvénient, travaillez donc toujours dans un sous-répertoire (ou plus profond) de lecteur (p.ex. Z:\exos_octave).

c. Octave 3.x et 4.0 sous Windows ne supporte officiellement pas l'utilisation de caractères accentués dans les scripts et dans les noms de fichiers/dossiers (voir wiki). On se limitera donc aux caractères ASCII-7bits

0.3.2 Anciennes versions de Octave pour Windows

On fournit ici pour mémoire les liens vers les descriptions et documentations d'installation d'anciennes versions Octave : 2.1.42 Cygwin | 2.1.73 Cygwin | 3.0.1 MSVC | 3.0.3 MSVC | 3.2.0 MinGW | 3.2.4 MinGW | 3.4.2 MinGW | 3.6.2 MinGW (très semblable à 3.6.4) | 3.6.4 MinGW | 3.8.2-1 MXE | 4.0.0 MXE | 4.0.3 MXE | 4.2.1 MXE |

0.4 Installation de Octave sous macOS

0.4.0 Généralités sur les différentes distributions Octave sous macOS

Comme sous Windows, Octave a fait sous macOS l'objet de différents "portages" (voir le wiki Octave). On distingue ainsi les procédures suivantes :

A. Installer une version pré-compilée ("bundle") de Octave

B. Installer et exécuter Octave dans une machine virtuelle sur votre Mac C. Recourir à l'un des packages managers du monde Mac :

a. Homebrew, en suivant ces indications

b. MacPorts (initialement appelé DarwinPorts), en suivant ces indications

c. Fink (portage sur macOS des outils dpkg et apt de Linux/Debian), en suivant ces indications

À moins que vous n'utilisiez déjà l'un de ces packages managers, nous vous déconseillons cette méthode, car les systèmes de packaging nécessitent l'installation préalable de l'environnement de développement Apple Xcode (très lourd: 2 GB !). Dans le futur, le macOS gcc Installer devrait pouvoir se substituer à Xcode.

Actuellement (août 2018), le wiki précité fait référence à 2 bundles Octave différents. Le plus récent ("Octave 4.4.0 Beta 4") ne démarrant pas proprement sous macOS 10.13 (High Sierra), nous sommes contraints d'utiliser l'ancien ("Octave 4.0.3") dont nous présentons l'installation dans le chapitre qui suit.

0.4.1 Installation du bundle Octave 4.0.3 distribué par SourceForge sous macOS

Procédure d'installation

(7)

Procédure d'installation de base sous macOS :

1. Téléchargez l'image-disque de l'installeur depuis notre site miroir ou depuis

https://sourceforge.net/projects/octave/files/Octave%20MacOSX%20Binary/ (fichier

*.dmg

de 323 MB du 11.7.2016)

2. Ouvrez ce fichier-image, acceptez les termes de la licence GPL en cliquant sur

[Agree]

=> une icône "Octave-Installer" apparaît sur le bureau, et une fenêtre de même nom s'ouvre

3. Faites un glisser-déposer de l'icône

Octave

sur l'icône de dossier

Applications

=> l'installation de Octave.app se déroule (~1 GB) et une icône Octave apparaît dans votre dossier d'Applications

4. Une fois l'installation terminée, vous pouvez éjecter/démonter l'image-disque Octave-Installer, puis jeter le fichier-image se trouvant dans votre dossier de Téléchargements

5. La première fois que vous lancerez

Octave

par double-clic sur son icône dans le dossier Applications, vous recevrez le message d'erreur "Impossible d'ouvrir Octave car cette application provient d'un développeur non identifié...". Ce qu'il faut faire c'est un

ctrl-clic

sur cette icône et choisir

Ouvrir

dans le menu déroulant, puis accepter...

Il se peut aussi que le Mac demande : "Font cache not found, so first plotting will be slow. Create font cache now ?". Répondez par Yes et prenez patience, car cela dure un certain temps avant que la fenêtre Octave apparaisse.

Quelques remarques concernant cette version de Octave

a. Cette distribution ne contient aucun package Octave pré-installé :-( Si vous devez installer des packages, suivez la procédure décrite dans notre chapitre "Packages Octave-Forge", en utilisant typiquement les commandes :

pkg list

-forge

(affichage de la liste des packages disponibles via SourceForge) et

pkg install -forge package

(installation locale du package spécifié)

b. Les 3 back-ends Qt, Fltk et Gnuplot sont pré-installés, mais seuls Qt et Fltk fonctionnent correctement. Notez que l'initialisation du back-end Qt (une fois par session utilisateur macOS) dure quelques dizaines de secondes lorsque vous dessinez votre première figure

c. L'usage des caractères accentués dans les scripts Octave est possible !

0.4.2 Anciennes versions de Octave sur Mac

On fournit ici pour mémoire les liens vers les descriptions et documentations d'installation d'anciennes versions Octave :

Octave.app 3.4.0 sous Mac OS X ≤ 10.7 | Octave 3.6.4 via Fink sous Mac OS X 10.8 | Octave 3.8.0-6beta sous Mac OS X 10.9 | Octave 4.0.0 sous forme de machine virtuelle avec Vagrant sous macOS |

0.4.3 Installation d'un éditeur de programmation pour macOS

Octave GUI intègre désormais un très bon éditeur. Si vous souhaitez cependant disposer d'un éditeur de programmation indépendant sous macOS, lisez les indications ci-après.

Installation de l'éditeur libre Atom

Atom est un éditeur de programmation et IDE récent qui est libre, multiplateforme et très évolutif, élaboré par la société GitHub Inc. Son installation sous macOS s'effectue comme suit :

1. Téléchargement à partir du site atom.io , lien Download For Mac

2. Puis ouvrir l'archive atom-mac.zip, et glisser le dossier "Atom" dans le dossier Applications

3. Un peu de configuration afin que cet éditeur soit accessible avec la commande

edit

sous Octave-CLI (Octave en mode commande dans une fenêtre terminal) :

dans une fenêtre terminal, passer la commande :

sudo mkdir /usr/local/bin

(répertoire qui n'existe bizarrement pas sous OS X 10.9)

puis lancer Atom, et faire : Atom > Install Shell Commands (qui va créer un lien symbolique dans le répertoire ci-dessus)

dans votre prologue Octave

/Users/votre_username/.octaverc

, insérez la commande :

EDITOR('atom')

4. Dans Atom, activation de la coloration syntaxique MATLAB/Octave :

sous Atom > Preferences > Packages , saisir

Octave

dans le champ "Search packages", puis sélectionner le package "Language Matlab - MATLAB/Octave language support for Atom" et cliquer sur Install

pour que ce ne soit pas le langage Objective C qui soit activé avec les M-files MATLAB/Octave, sous Atom >

Preferences , saisir

Objective

dans le champ "Filter packages", puis sélectionner le package "Language Objective C" et cliquer sur Disable

Installation de l'éditeur gratuit TextWrangler

Si vous êtes intéressé par cet éditeur :

Afficher les explications ...

(8)

9/14/2018

MATLAB et Octave - 1. Notions de base

https://enacit1.epfl.ch/cours_matlab/base.shtml

1/15

1. Notions de base MATLAB et GNU Octave

1.1 Introduction

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 et packages Octave-Forge".

FreeMat : logiciel libre multi-plateforme plus récent mais déjà assez abouti, implémentant un sous-ensemble des

fonctionnalités de MATLAB, avec un IDE comprenant: editeur/debuguer, historique, workspace tool, path tool, explorateur de fichiers, graphiques 2D/3D... Pour l'installer, suivez les instructions figurant sous ce lien.

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 d'introduction à 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.

(9)

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), ... calcul symbolique/formel : Maxima, Yacas, PARI/GP, Giac/Xcas... autres : voyez notre annuaire des principaux logiciels libre !

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.2 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" 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.3 Démarrer et quitter MATLAB ou Octave, prologues et épilogues, interface

graphique

1.3.1 Démarrer et quitter MATLAB ou 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...

(10)

9/14/2018

MATLAB et Octave - 1. Notions de base

https://enacit1.epfl.ch/cours_matlab/base.shtml

3/15

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.3.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

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")

changement du prompt (invite de commande) (voir la commande

PS1

au chapitre "Fenêtre de commandes MATLAB/Octave")

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 :

(11)

puis le premier script 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.3.3 Interface graphique et IDE de MATLAB

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-clic

Evaluate Selection . De plus les commandes sélectionnées peuvent copiées dans le presse-papier avec

droite-clic

Copy ou être injectées dans un nouveau script avec

droite-clic

Create Script

Editor : voir le chapitre "Éditeur et debugger" Help : voir le chapitre "Outils d'aide..."

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

(12)

9/14/2018

MATLAB et Octave - 1. Notions de base

https://enacit1.epfl.ch/cours_matlab/base.shtml

5/15

1.3.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-clic

Evaluate . De plus les commandes sélectionnées peuvent copiées dans le presse-papier avec

droite-clic

Copy ou être injectées dans un nouveau script avec

droite-clic

Create script . Un filtre permet aussi de restreindre l'affichage des commandes contenant une chaîne.

Editor : voir le chapitre "Éditeur et debugger"

Variable Editor (depuis Octave 4.4) : interface de type tableur permettant de visualiser/éditer le contenu des variables. Documentation : voir le chapitre "Outils d'aide..."

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 :

Afficher les détails ...

1.4 Outils d'aide et d'information, références internet utiles

1.4.1 Aide en ligne

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

(13)

(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 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

Voyez aussi ce Octave Quick Reference Card (aide-mémoire en 3 pages, PDF) ainsi que cette FAQ

1.4.2 Exemples et démos

(14)

9/14/2018

MATLAB et Octave - 1. Notions de base

https://enacit1.epfl.ch/cours_matlab/base.shtml

7/15

demo { type { nom } }

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.4.3 Ressources Internet utiles relatives à MATLAB et Octave

Sites Web

MATLAB

- site de la société The MathWorks Inc (éditrice de MATLAB) : https://www.mathworks.com - article sur MATLAB dans Wikipedia : français, anglais

- site MATLAB Central, avec File Exchange (diffusion de scripts/fonctions, fonctionnant généralement aussi sous Octave), Newsgroup (forums de discussion), Answers (questions/réponses) : https://ch.mathworks.com/matlabcentral/ - Wiki Book "Matlab Programming" : https://en.wikibooks.org/wiki/MATLAB_Programming

GNU Octave

- site principal consacré à GNU Octave : https://www.octave.org (https://www.gnu.org/software/octave/)

- installeurs GNU Octave : https://www.gnu.org/software/octave/download, mais voir en premier lieu notre page spéciale

- dépôt des paquets "Octave-Forge" sur SourceForge : https://octave.sourceforge.io - article sur GNU Octave dans Wikipedia : français, anglais

- espace de partage de fonctions/scripts Octave : https://wiki.octave.org/Agora_Octave (depuis été 2012, mais ne semble plus actif en 2018)

- site de l'auteur principal de Octave John W. Eaton

- Wiki Book Octave : https://fr.wikibooks.org/wiki/Programmation_Octave (FR), https://en.wikibooks.org/wiki/Octave_Programming_Tutorial (EN)

Packages Octave-Forge (analogues aux toolboxes MATLAB) - liste des packages disponibles :

pkg list -forge

- liste, description et téléchargement de packages : https://octave.sourceforge.io/packages.php

- index des fonctions (Octave core et packages Octave-Forge) : https://octave.sourceforge.io/list_functions.php Gnuplot

- site principal Gnuplot (back-end graphique traditionnel sous Octave) : http://www.gnuplot.info/ Forums de discussion, mailing-lists, wikis, blogs

MATLAB

- forum MathWorks : https://ch.mathworks.com/matlabcentral/answers/

- forum Usenet/News consacré à MATLAB : https://groups.google.com/forum/#!forum/comp.soft-sys.matlab - espace d'échange francophone sur MATLAB (tutoriels, FAQ...) : https://matlab.developpez.com/

Octave

- Octave release notes & news : https://www.gnu.org/software/octave/news.html - wiki Octave : https://wiki.octave.org

- forum utilisateurs et développeurs, avec mailing lists associées : https://octave.1599824.n4.nabble.com/ (avec sections: General, Maintainers, Dev)

- forum de discussion francophone dédié à Octave : https://www.developpez.net/forums/f2080/environnements-developpement/autres-edi/octave/

- soumission de bugs relatifs à Octave core (depuis mars 2010) : https://bugs.octave.org (https://savannah.gnu.org/bugs/?group=octave)

- en relation avec le développement de Octave :

- mailing lists : https://savannah.gnu.org/mail/?group=octave et https://lists.gnu.org/mailman/listinfo/octave-maintainers - blog : https://planet.octave.org/

(15)

1.5 Types de nombres (réels/complexes, entiers), variables, expressions,

fonctions

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)

Figure

Tableau cellulaire  T
Graphique 2D de lignes et/ou semis de points sur axes linéaires :
Graphique 2D de lignes et/ou semis de points sur axes logarithmiques :
Graphique 2D de champ de vecteurs de type "boussole" :
+7

Références

Documents relatifs

Pour appeler le programme sur lequel vous travaillez, appeler main (sans le .m) depuis la console octave dans le r´ epertoire courant.. – Afin de palier les probl` emes

Dans le désert de Judée (IMAGE) : pour tous ceux et celles qui se sentent seuls ou abandonnés pendant cette période de pandémie, afin que la joie du Christ ressuscité leur

C’est un ensemble industriel, localisé sur un même site, qui transforme la biomasse agricole et forestière en une diversité de produits biosourcés (alimentation humaine et

Nous distinguons les fonctions math´ ematiques (applicables sur tous types de variables), les fonctions concernant sp´ ecifiquement les vecteurs et les matrices, les fonctions

Ouvrir un nouveau graphe ave "New" dans le menu "FSGraph".. L'édition de graphes est détaillée dans le hapitre 5.2

Dans l´antiquité, Pythagore a tenté de déterminer le rapport de fréquence entre les notes en les exprimant en fractions de nombres entiers (tableau ci-contre).. Le Sol est

Début d’une amitié indéfectible pour Claude Monet et Auguste Rodin, dont il est le premier à décrire la Porte de l’Enfer.. Se lie aussi avec Henry Becque, Henri Lavedan,

Pour indiquer quel doit être, en début de session, le répertoire courant (où sera aussi recherché le prologue utilisateur) : sous Windows : afficher les propriétés du raccourci