Introduzione a Octave: caratteristiche, interfaccia grafica e programmazione

Classified in Informatica

Written at on italiano with a size of 8,63 KB.

OCTAVE

Octave è un software open-source scritto da John W. Eaton e molti altri. È un linguaggio interpretato ad alto livello, orientato al calcolo numerico utile anche all’analisi dei dati: moltiplica e inverte matrici, determina radici di equazioni lineari e non lineari, manipola polinomi, integra, differenzia e disegna grafici. Il suo insieme di funzioni ne comprende molte orientate all’ottimizzazione, alla statistica, alla matematica finanziaria, all’interpolazione, alla teoria del controllo e allo studio dell’audio e delle immagini. Octave è la versione gratuita di Matlab, che ha caratteristiche identiche dal punto di vista dei codici.

L’interfaccia grafica

L’interfaccia grafica è costituita da: menù, file, debug, edit, window, help, news e da 4 ambienti:

  • GRSTORE DEI FILE: Una finestra sulla cartella in cui si sta lavorando, che mostra i files presenti nella cartella stessa, ma anche funzioni e script.
  • SPAZIO DI LAVORO: Una finestra che mostra il contenuto del medesimo (variabili memorizzate e loro valore).
  • STORICO DEI COMANDI: Contiene una lista di tutti i comandi digitati, utile laddove si voglia lanciare un altro comando a partire dai precedenti.
  • FINESTRA DEI COMANDI: Finestra nella quale vengono inseriti i comandi in forma interattiva, visualizzandone il risultato.

Octave è un programma molto intuitivo e generalmente possiamo lavorare in 2 modi:

  • VIA SCRIPT: Creiamo un nuovo script (e apparirà la finestra “editor”), dove possiamo incollarci sopra, ad esempio, dei codici forniti dal docente che possiamo utilizzare per effettuare una serie di operazioni con Octave. Questo editor ci permetterà di replicare gruppi di comandi in maniera sequenziale e questi gruppi di comandi ci permetteranno di andare ad effettuare le operazioni che vogliamo sui nostri dati.
  • VIA MANUALE: Consiste lavorare mediante funzioni, cioè creare funzioni che dato un valore di input ci restituisca un valore di output. Ci permettono di creare qualcosa che non è esplicitamente inserito in Octave. Esse operano all’ interno dello script e possono essere replicare delle analisi su dati diversi.

Uno dei punti forza di Octave è quello di riuscire a manipolare grosse quantità di dati, che possono essere gestiti o manipolati mediante contenitori:

  • Array: è una matrice dati a cui possiamo accedervi mediante gli operatori di accesso. Vi sono anche gli array di cella, dove ogni suo elemento può contenere un array. L’array di struttura permette di registrare array e anche stringhe (“struct”), dove i valori possono essere estratti per poter effettuare una serie di operazioni (con “getfield”).

La programmazione

La programmazione in Matlab/Octave è fondamentale laddove fosse necessario risolvere problemi più capienti, che necessitano di più calcoli. Qui entrano in gioco gli algoritmi e le strutture di controllo.

  • Algoritmo: è una sequenza di istruzioni che svolgono un determinato compito in un determinato periodo di tempo: è una procedura computazionale che a partire da un determinato problema da risolvere, permette di risolvere il medesimo problema con un numero di operazioni definito.
  • La struttura di controllo: permette di modificare l’ordine delle operazioni. Ci sono 3 tipi di operazioni: SEQUENZIALI: istruzioni in ordine, CONDIZIONALI: Istruzioni condizionate (IF), ITERATTIVE: ripetono le operazioni (FOR/WHILE).
  • La programmazione strutturata: è una tecnica per progettare programmi. Si utilizza una gerarchia di moduli (ciascuno dei quali ha un input/output), creati dall’utente. Il controllo scende verso il basso, senza salti verso l’alto.
  • La progettazione TOP-DOWN: consiste nel descrivere lo scopo del programma e poi nella specificazione successiva delle operazioni dividendo il problema in livelli. E’ utile prima creare degli algoritmi per ottenere la soluzione e poi scrivere il codice in Octave. In questo modo si creano i moduli e si testano.

Dal punto di vista strutturale, esisterà una struttura centrale del programma, ci saranno più moduli che vengono richiamati, come la struttura ad albero. Si può utilizzare un diagramma di flusso che ci permette di visualizzare le operazioni che il programma compie. IL flusso può muoversi attraverso i vari moduli e può prendere direzioni differenti a seconda degli obiettivi.

  • Gli operatori logici: permettono di effettuare test logici. Laddove fosse vera una determinata condizione, il programma prosegue in una determinata condizione, altrimenti andremo in un'altra direzione.
  • Operatori relazionali: mettono in relazioni gli oggetti, determinando mediante il risultato di tale relazione, l’evoluzione del flusso del programma.
  • Le istruzioni condizionali (IF, ELSE, ELSEIF). Esse permettono di fissare delle condizioni alla base del flusso del programma in una direzione (o in un’altra). Hanno il compito di guidare il flusso del programma a partire dagli operatori relazionali e possiamo esplorare tutti i possibili output, in modo più chiaro, dai diagrammi di flusso.
  • CICLO: Esso permette di reiterare una o più istruzioni fino a che non venga definita un’uscita dal ciclo medesimo (automaticamente o magari dopo un certo numero di iterazioni).

Il ciclo FOR. Il costrutto for permette di creare dei cicli che consentono di ripetere una serie di operazioni finché non fosse possibile uscire dal ciclo medesimo. Andiamo a fissare all’inizio dell’algoritmo un numero di iterazioni preciso che porteranno a una serie di comandi replicati volta per volta. Il ciclo può andare a identificare la condizione di entrata e di uscita senza fissare una condizione vera e propria, ma è anche possibile fissarla. Break ci consente di uscire dal ciclo for, azionato all’interno di un IF, mentre Continue ci dà la possibilità di proseguire, laddove ci sia un certo risultato che mi impedirebbe il proseguimento del ciclo.

Il ciclo WHILE. Questo ciclo, a differenza del ciclo for, prevede una condizione di entrata e prosegue finché questa condizione di input risulta essere vera, quando la medesima condizione risulta falsa, si esce dal ciclo. While è più flessibile del ciclo for, infatti non prevede un determinato numero di iterazioni.

Il ciclo DO UNTIL. Al contrario del ciclo While, l’operazione è falsa e testiamo volta per volta fino a quando la condizione finale risulta essere vera.

SWITCH. Questo comando serve per modificare la dinamica di un flusso. Esso ci permette di modificare l’andamento del flusso e quindi di farlo girare in una direzione diversa (fissata dalla direzione dello switch), ossia permette di switchare il flusso a seconda del nostro obiettivo. Esso permette di passare da un punto all’altro di una determinata funzione di riferimento permettendo la scelta tra più alternative. I valori condizionali per cui il flusso va in una determinata condizione, vengono chiamati “case”. Se non risultano veri i “case”, il flusso prende la direzione fissata da “otherwise”

I GRAFICI non sono il punto forte di Octave dal punto di vista delle analisi di dati, ma prevede comunque una vasta scelta per le nostre esigenze. Possiamo utilizzare: plot(x,y) che ci mostra un grafico date due variabili; fplot("[cos(x),sin(x)]",[0,2*pi]) che ci mostra 2 funzioni diverse e sovrapposte in uno stesso grafico; subplot(2,1,1) e fplot(@ sin, [-10,10]) che ci permettono di visualizzare diversi grafici distinti e non sovrapposti; hold on ci permette di tenere conto dei grafici, tenendo conto del grafico di riferimento. Dal punto di vista matematico, invece offre ottimi grafici in 3D utili alla visualizzazione di funzioni a 2 variabili.

Regressione e interpolazione polinomiale : La regressione e l’interpolazione polinomiale sono due tipici strumenti dell’analisi dei dati che vengono usati per studiare la relazione tra due variabili. In particolare è spesso d’interesse il modo per approssimare l’andamento di una variabile (la variabile y) rispetto all’altra (la variabile x). Si usano regress() e polyfit().

Entradas relacionadas: