Running Octave

Avviamento di Octave

La finestra di Octave stampa all'avvio una nota introduttiva con la versione e altri statement legali
GNU Octave, version 4.0.0
Copyright (C) 2015 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type 'warranty'.

Octave was configured for "x86_64-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/get-involved.html

Read http://www.octave.org/bugs.html to learn how to submit bug reports.
For information about changes from previous versions, type 'news'.

>>

Quindi attende un comando da tastiera dopo aver scritto il cosiddetto prompt che contiene il nome del programma (octave ) e un numero progressivo che viene reinizializzato ogni volta che Octave si avvia.

>>

Ogni comando viene terminato dal tasto Invio , eseguito immediatamente e se il comando produce un risultato (assegnabile ad una variabile) allora viene stampato subito dopo la linea di comando che l'ha prodotto. Per esempio calcoliamo un espressione aritmetica

>> 5+3*4/15
ans =  5.8000

ans è l'abbreviazione di answer ed è il nome di una variabile che viene creata automaticamente da Octave ogni volta che non assegnamo il risultato di una linea di comando ad una variabile usando l'operatore di assegnazione =

>> risultato=5+3*4/15
risultato =  5.8000

In ogni momento è possibile esplorare il workspace di Octave per sapere quali variabili sono state create in modo persistente con il comando who o la sua forma più completa whos

>> whos
Variables in the current scope:

   Attr Name           Size                     Bytes  Class
   ==== ====           ====                     =====  ===== 
        a              1x1                          8  double
        ans            1x1                          8  double
        risultato      1x1                          8  double

Total is 3 elements using 24 bytes

Che elenca le variabili esistenti nel workspace, la loro dimensione, quanta memoria occupano e a quale classe di rappresentazione binaria appartengono. Per default Octave usa double : numero espresso in virgola mobile in doppia precisione.

Le variabili sono riferimenti simbolici al loro contenuto e quindi possono apparire all'interno di una espressione: l'interprete dei comandi valuta l'espressione sostituendo al simbolo di una variabile il suo valore e quindi calcolando il risultato. Esempio: espressione che calcola la funzione tanh (tangente iperbolica) definita dall'espressione

$$ tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} $$

dove avviene una tripla sostituzione:
  • Il valore della variabile viene sostituito per essere passato alla funzione esponenziale exp
  • La funzione esponziale viene calcolata per ognuno dei valori degli argomenti
  • Il risultato di ogni funzione sostituito nell'espressione e il risultato dell'espressione assegnato
>> x=1
x = 1
>> tan_iperb=(exp(x) - exp(-x))/(exp(x) + exp(-x))
tan_iperb =  0.76159

Quando si deve scrivere espressioni lunghe si può ingrandire la finestra terminale con la linea di comando. E' raccomandabile spezzare una espressione in varie componenti, salvando risultati intermedi in variabili, soprattutto quando si sta provando un espressione o una funzione. Esiste la possibilità di spezzare un comando su più linee usando la sequenza di continuazione di linea costituita da 3 punti consecutivi (senza spazi quindi). Battendo il tasto Invio subito dopo aver digitato "..." invece di eseguire il comando appare il carattere ">" che chiede di continuare il testo della linea precedente

>> tan_iperb=(exp(x) - exp(-x))...
> /(exp(x) + exp(-x))
tan_iperb =  0.76159
Questa proprietà viene usata poco in modo interattivo e lasciata soprattutto negli m-file , cioè negli script di Octave

Funzionalità della linea di comando

Digitare comandi è spesso fonte di errori banali che richiedono rapida correzione. La shell di Octave mantiene una history dei comandi digitati. La history può essere percorsa attraverso i tasti Up-Arrow (Freccia in sù) per richiamare comandi battuti in precedenza (la shell conserva 1024 comandi che vengono salvati nel file .history), oppure Down-Arrow (Freccia in giù) per comandi più recenti. Anche le sequenze Control-p e Control-n eseguono la stessa funzione.

La funzionalità di navigazione permettono anche di esplorare selettivamente la history digitando i primi caratteri di un comando. Esempio: dopo aver eseguito i comandi precedenti di questo esercizio digitate i caratteri tan e quindi Up-Arrow : sulla linea di comando dovrebbero apparire solo le linee nella history che cominciano con quella sequenza.

Editing della linea di comando in Octave

Molto spesso è necessario spostare rapidamente il cursore all'interno della linea per correggere un carattere o una parola. Ci sono alcune semplici sequenze di tasti per effettuare alcuni movimenti caratteristici. E' utile spendere qualche minuto cercando di memorizzare queste sequenze (controllate dal tasto Ctrl o dal tasto Meta ) per avere un maggior controllo in fase di editing. Richiamate una delle linee di comando della history con tasto Up-Arrow e quindi provate a spostare il cursore con queste sequenze (premendo entrambi i tasti Ctrl +tasto funzione )

Alcune di queste sequenze potrebbero essere intercettate dal window manager del sistema e usate per altre funzioni. In questi casi la sequenza intercettata non è funzionante nel contesto di Octave

  • Ctrl-b : Muove indietro di un carattere
  • Ctrl-f : Muove avanti di un carattere
  • Ctrl-d : Cancella il carattere sotto il cursore
  • Ctrl-a : Muove all'inizio della linea
  • Ctrl-e : Muove alla fine della linea
  • Ctrl-l : Pulisce la finestra e stampa la linea corrente in alto
  • Ctrl-u : Cancella tutti i caratteri sulla linea prima della posione corrente del cursore. Di conseguenza la doppia sequenza Ctrl-e Ctrl-u cancella sempre tutta la linea
  • Ctrl-_ (tasto underscore ) oppure Crtl-/ : Annulla l'ultima operazione di editing effettuata (non funziona in Matlab)

Un'altra serie di sequenze usa il tasto Meta che solitamente corrisponde al tast Alt , ma che talvolta viene mappato sul tasto Window . Se una sequenza è intercettata dal window manager è possibile emularla digitando (uno alla volta) il tasto ESC e quindi il tasto della funzione

  • Meta-f : sposta il cursore avanti di una parola
  • Meta-b : sposta il cursore indietro di una parola
  • Meta-r : annulla tutte le modifiche fatte alla linea corrente

Soppressione dell'output di una linea di comando

Ogni volta che un comando viene eseguito il risultato viene scritto sul terminale. Questo è utile per controllare che l'assegnazione del valore di uno scalare sia corretto o per esplorare piccoli insiemi di dati, come matrici di dimensione dell'ordine di alcune unità, al massimo per una matrice di dimensione 10x10. Quando l'effetto di un calcolo è la creazione o rielaborazione di una matrice più grande (specialmente per le matrici che contengono immagini) l'output automatico sul terminale è inutile e fastidioso. Si può sempre silenziare l'output al terminale aggiungendo il carattere ';' (punto e virgola) alla fine della linea di comando.

Cartella di lavoro di Octave/Matlab

Per ogni accesso a dati memorizzati su disco Octave/Matlab assumono che i dati siano in una cartella di lavoro il cui nome dipende dal tipo di installazione, dal nome dell'utente e dal sistema operativo. E' importante conoscere questa cartella così da poter copiare da essa o in essa immagini e dati da elaborare. Il nome viene stampato dal comando pwd , che per Matlab su Linux esempio produce un output di questo tipo

>> pwd

ans =

/home/mxm

Su Octave

>> pwd
ans = /home/mxm