GNU Octave: Strutture dati e I/O

57
GNU Octave: strutture dati e input/output Ing. Andrea Spadaccini [email protected] Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Universit` a di Catania 28 Aprile 2009

Transcript of GNU Octave: Strutture dati e I/O

Page 1: GNU Octave: Strutture dati e I/O

GNU Octave: strutture dati e input/output

Ing. Andrea [email protected]

Dipartimento di Ingegneria Informatica e delle TelecomunicazioniUniversita di Catania

28 Aprile 2009

Page 2: GNU Octave: Strutture dati e I/O

Sommario

Strutture dati avanzate

I/O di dati su file

Riepilogo gestione file WAVE

Grafici

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 3: GNU Octave: Strutture dati e I/O

Cell array Strutture

Parte I

Strutture dati avanzate

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 4: GNU Octave: Strutture dati e I/O

Cell array Strutture

Riepilogo: vettori

Vettori

I vettori (e le matrici) sono delle strutture dati che consentono dielaborare dati di tipo omogeneo.

Problema

Esistono strutture dati che consentano di raggruppare dati nonomogenei?Esempio: carta da gioco

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 5: GNU Octave: Strutture dati e I/O

Cell array Strutture

Cell array

Scopo

I cell array sono dei contenitori in grado di contenere dati di tipoarbitrario.

Utilizzo

Si usano in maniera simile ai vettori, con la differenza che al postodell’operatore [] si utilizzano gli operatori () o {}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 6: GNU Octave: Strutture dati e I/O

Cell array Strutture

Differenza tra gli operatori {} e ()

Operatore {}

Costruzione di un cell array

Indicizzazione (per prelevare valori o assegnare nuovi valori)

Selezione elementi multipli: elenco separato da virgole

Eliminazione: svuota la cella senza eliminarla

Operatore ()

Indicizzazione (per prelevare valori o assegnare nuovi valori)

Selezione elementi multipli: nuovo cell array

Eliminazione: elimina la cella

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 7: GNU Octave: Strutture dati e I/O

Cell array Strutture

Creazione di Cell Array

>> a = cell(1, 2)a = {[1,1] = [][1,2] = []

}

>> arr = {’stringa’, eye(2), 1:2:10}arr = {[1,1] = stringa[1,2] = 1 0

0 1[1,3] = 1 3 5 7 9

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 8: GNU Octave: Strutture dati e I/O

Cell array Strutture

Creazione di Cell Array

>> a = cell(1, 2)a = {[1,1] = [][1,2] = []

}

>> arr = {’stringa’, eye(2), 1:2:10}arr = {[1,1] = stringa[1,2] = 1 0

0 1[1,3] = 1 3 5 7 9

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 9: GNU Octave: Strutture dati e I/O

Cell array Strutture

Aggiunta di un elemento

>> arr{4} = 90arr = {[1,1] = stringa[1,2] =

1 00 1

[1,3] =1 3 5 7 9

[1,4] = 90}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 10: GNU Octave: Strutture dati e I/O

Cell array Strutture

Selezione di elementi

>> arr{1}ans = stringa

>> arr([1 4])ans = {[1,1] = stringa[1,2] = 90

}

>> arr{[1 4]}ans =(,[1] = stringa[2] = 90

,)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 11: GNU Octave: Strutture dati e I/O

Cell array Strutture

Selezione di elementi

>> arr{1}ans = stringa

>> arr([1 4])ans = {[1,1] = stringa[1,2] = 90

}

>> arr{[1 4]}ans =(,[1] = stringa[2] = 90

,)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 12: GNU Octave: Strutture dati e I/O

Cell array Strutture

Selezione di elementi

>> arr{1}ans = stringa

>> arr([1 4])ans = {[1,1] = stringa[1,2] = 90

}

>> arr{[1 4]}ans =(,[1] = stringa[2] = 90

,)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 13: GNU Octave: Strutture dati e I/O

Cell array Strutture

Eliminazione di elementi

>> arr(2) = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = 90

}

>> arr{3} = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = []

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 14: GNU Octave: Strutture dati e I/O

Cell array Strutture

Eliminazione di elementi

>> arr(2) = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = 90

}

>> arr{3} = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = []

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 15: GNU Octave: Strutture dati e I/O

Cell array Strutture

Eliminazione di elementi

>> arr(2) = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = 90

}

>> arr{3} = []arr = {[1,1] = stringa[1,2] = 1 3 5 7 9[1,3] = []

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 16: GNU Octave: Strutture dati e I/O

Cell array Strutture

Conversione di Cell Array

Conversione da Cell Array a matrice

La funzione cell2mat prende come parametro in ingresso un cell array etenta di convertirlo in una matrice.Per effettuare questa conversione, tenta di concatenare tutti gli elementidel cell array. Questa potrebbe non essere l’operazione desiderata

Esempio di errata conversione

>> cell2mat(arr)ans =115 116 114 105 110 103 97 1 3 5 7 9

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 17: GNU Octave: Strutture dati e I/O

Cell array Strutture

Strutture

Descrizione

GNU Octave consente di realizzare strutture simili alle strutture messe adisposizione dal linguaggio C, ovvero delle strutture dati che contenganodati di tipo eterogeneo indicizzabili tramite notazione puntata edidentificatori di tipo stringa.

Una differenza rispetto al C

In C e possibile creare un nuovo tipo di dato ed usarlo per instanziarediverse variabili di quel tipo.Cio non e vero in Octave, in quanto le strutture sono fortementedinamiche, ed e addirittura possibile aggiungere campi in fase diesecuzione.

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 18: GNU Octave: Strutture dati e I/O

Cell array Strutture

Creazione di strutture (I)

La funzione struct

La funzione struct consente di creare una struttura specificando inmaniera alternata il nome del campo ed il valore. Esempio:

>> s = struct(’a’, 1, ’b’, 2)s ={a = 1b = 2

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 19: GNU Octave: Strutture dati e I/O

Cell array Strutture

Creazione di strutture (II)

Generazione diretta

>> str.x = 1str ={x = 1

}

Attenzione

Questa sintassi e da evitare, in quanto poco esplicita. Meglio scrivere piucodice ed aumentare la leggibilita.

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 20: GNU Octave: Strutture dati e I/O

Cell array Strutture

Accesso agli elementi di una struttura

Notazione puntata

>> s.a + s.bans = 3

Funzione getfield

La funzione getfield prende come parametri una struttura ed unachiave (o piu chiavi, in caso di strutture annidate), restituendo l’elementocorrispondente:

>> getfield(s, ’a’) + getfield(s, ’b’)ans = 3

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 21: GNU Octave: Strutture dati e I/O

Cell array Strutture

Impostazione degli elementi di una struttura

Notazione puntata

>> s.dato = 1:10s = {a = 1b = 2dato = 1 2 3 4 5 6 7 8 9 10

}

Funzione setfield

Funziona in maniera analoga a getfield, con un parametro aggiuntivocontenente il valore da impostare.

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 22: GNU Octave: Strutture dati e I/O

Cell array Strutture

Iterazione degli elementi di una struttura

Sintassi estesa istruzione for

L’istruzione for consente di iterare una struttura con la seguente sintassi:for [val, key] = strutturaistruzioni

end

Esempio

>> for [value, key] = sdisp([key ’: ’ mat2str(value)]);

enda: 1b: 2dato: [1,2,3,4,5,6,7,8,9,10]

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 23: GNU Octave: Strutture dati e I/O

Cell array Strutture

Rimozione di elementi da una struttura

Funzione rmfield

Sintassi: rmfield(s, field). Torna una nuova struttura, creata apartire dalla struttura s eliminando il campo field.

Esempio

>> s = rmfield(s, ’dato’)ans ={a = 1b = 2

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 24: GNU Octave: Strutture dati e I/O

Cell array Strutture

Altre funzioni utili sulle strutture

isstruct(s) - torna 1 se s e una strutturaisfield(s, name) - torna 1 se s e una struttura e contiene uncampo denominato namefieldnames(s) - torna un cell array contenente l’elenco dei nomidei campi di sstruct2cell(s) - torna un cell array contenente gli elementi di s

Esempio struct2cell

>> struct2cell(s)ans = {[1,1] = 1[2,1] = 2

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 25: GNU Octave: Strutture dati e I/O

Cell array Strutture

Esempio: mazzo di carte (I)

Modello

Useremo come modello del mazzo di carte un vettore di strutture carta.Ciascuna struttura conterra un campo seme ed un campo valore.

Generazione del mazzo

semi = {’C’, ’Q’, ’F’, ’P’};valori = 1:13; carte = [];for i = semi

for j = valoricarta = struct(’seme’, i, ’valore’, j);carte = [carte carta];

endend

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 26: GNU Octave: Strutture dati e I/O

Cell array Strutture

Esempio: mazzo di carte (II)

La prima carta

>> carte(1)ans ={seme = Cvalore = 1

}

Mischiamo il mazzo di carte

La funzione randperm(N) torna un vettore contenente gli interi tra 1 edN, in ordine casuale. Quindi...

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 27: GNU Octave: Strutture dati e I/O

Cell array Strutture

Esempio: mazzo di carte (III)

Codice per mischiare il mazzo

carte = carte(randperm(length(carte)));

La prima carta (ovvero una carta a caso)

>> carte(1)ans ={seme = Qvalore = 8

}

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 28: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

Parte II

I/O di dati su file

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 29: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

I comandi save e load

save

Sintassi: save [opzioni ] nomefile var1 [... varN]Se invocato senza opzioni, salva le variabili var1 ... varN nel filenomefile, utilizzando il formato MatlabTM5.Alcune opzioni:

-ascii salva i dati in formato ASCII (vale per scalari, vettori ematrici)

-v4 -v6 -v7 salvano i dati in formato MatlabTM4, 6 o 7

load

La sintassi e simile a save, utilizza le stesse opzioni. E possibile ometterel’elenco di variabili, ed in tal caso tutte le variabili presenti nel filesaranno caricate.

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 30: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

Esempio

matrix = ones(3);save m.mat matrixexit(caricamento nuova istanza di Octave)load m.matdisp(matrix)

1 1 11 1 11 1 1

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 31: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

Apertura e chiusura

La funzione fopen

Sintassi: fid = fopen(name, mode, arch). Torna un file-idnumerico, da usare nelle successive operazioni.Opzioni:

name nome del file da aprire

mode modalita di apertura (’r’, ’w’, ’a’ ..)

arch parametri dipendenti dall’architettura

Torna -1 se l’apertura non va a buon fine.

La funzione fclose

Sintassi: fclose(fid).

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 32: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

Operazioni su file

fputs(fid, s) scrive la stringa s nel file fid

fprintf(fid, fmt, ..) scrive sul file fid secondo la stringa diformato fmt ed eventuali parametri aggiuntivi

[v1, v2, .., count] = fscanf(fid, fmt, ’C’) legge dal filefid, tornando i valori specificati in fmt nelle variabili v1, v2...

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 33: GNU Octave: Strutture dati e I/O

I comandi save e load I/O in stile C

Esempio

f = fopen(’out.txt’, ’w’);for i = 1:10

fprintf(f, ’%d %d\n’, i, i+1);endfclose(f);

f = fopen(’out.txt’, ’r’);count = 1;while count >= 1

[v1, v2, count] = fscanf(f, ’%d %d\n’, ’C’);if count > 1

disp(v1); disp(v2);end

endIng. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 34: GNU Octave: Strutture dati e I/O

Octave-Forge Funzioni per l’I/O su file WAVE

Parte III

Riepilogo gestione file WAVE

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 35: GNU Octave: Strutture dati e I/O

Octave-Forge Funzioni per l’I/O su file WAVE

Octave-Forge

Cos’e Octave-Forge

E un insieme di pacchetti semi-ufficiali per Octave, che ne estendono lefunzionalita.

Cos’e un pacchetto

E l’equivalente dei toolbox di MatlabTM, ovvero un insieme di funzioniaventi uno scopo comune. Si presenta sotto forma di file con estensione.tar.gz, e si installano con il comando pkg installnomepacchetto.tar.gz

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 36: GNU Octave: Strutture dati e I/O

Octave-Forge Funzioni per l’I/O su file WAVE

Pacchetti di interesse

Audio - contiene funzioni per l’elaborazione di file audio (wave edaltri)

Image - contiene funzioni per l’elaborazione delle immagini

Video - contiene funzioni per l’elaborazione dei video in formato AVI

Signal - contiene funzioni per l’elaborazione dei segnali

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 37: GNU Octave: Strutture dati e I/O

Octave-Forge Funzioni per l’I/O su file WAVE

I/O su file WAVE

La funzione wavread

Sintassi: [y, fs, bits] = wavread(filename). Legge i dati del filefilename, restituendo in y i campioni, in fs la frequenza dicampionamento in Hz, in bits il numero di bit per campione.

La funzione wavwrite

Sintassi: wavwrite(y, fs, bits, filename). Scrive i campionipresenti nel vettore y nel file filename. Se nbits o fs non sonospecificati, di default utilizza 8000 Hz e 16 bit per campione

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 38: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Parte IV

Grafici

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 39: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il sistema di plotting di GNU Octave

gnuplot

gnuplot [sic] e il programma che si occupa di realizzare dietro le quinte igrafici di Octave.

Sintassi dei comandi di plotting

Anche in questo frangente, la sintassi di Octave e equivalente a quella diMatlabTM, con la differenza che alcune opzioni avanzate non sonoimplementate a causa di limitazioni di gnuplot.

Suggerimento per gli utenti GNU/Linux

Invocate Octave utilizzando il comando GNUTERM=’wxt’ octave perottenere grafici piu gradevoli grazie al backend wxt di gnuplot.

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 40: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il comando plot, sintassi di base

Invocazione con argomento singolo

Se invocato con un solo argomento di tipo vettore, la funzione plotgenera un grafico utilizzando come ascisse gli indici del vettore ecome ordinate gli elementi del vettore.

Se invocato con un solo argomento di tipo matrice, ogni colonnaviene trattata come vettore a se stante, e viene visualizzatoall’interno dello stesso grafico secondo le regole dell’invocazione convettore

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 41: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Esempi plot singolo parametro

Vettore

interval = linspace(-pi, pi, 100);plot(sin(interval));

Matrice

plot([sin(interval); cos(interval)]’);

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 42: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Invocazione di plot con due parametri

plot(x, y)

Se plot viene invocato con due parametri, utilizza il primo come vettore(matrice) delle ascisse ed il secondo come vettore (matrice) delleordinate.

Esempio

plot(interval, sin(interval));plot([interval; interval]’, [sin(interval); cos(interval)]’)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 43: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Applicare stili ai grafici (I)

La stringa di formato

E possibile fornire a plot un parametro aggiuntivo, che contieneinformazioni sullo stile della linea da utilizzare per il grafico.Formato: ’stile colore ;etichetta;’. Ciascuna parte e opzionale.

Stili

’-’ linea tratteggiata, ’.’ linea puntata, ’+’ ’*’ ’o’ ’x’ simbolidiscreti.

Colori

’k’, ’r’, ’g’, ’b’, ’m’, ’c’, ’w’

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 44: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Applicare stili ai grafici (II)

Etichette

Le etichette sono stringhe che compaiono nella legenda del grafico,accanto allo stile che rappresenta il dato graficato. I due caratteri ;prima e dopo l’etichetta sono obbligatori.

Esempi

plot(interval, sin(interval), ’;sin(x);’);plot(interval, cos(interval), ’g-;cos(x);’);

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 45: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Applicare stili ai grafici (III)

Proprieta

Oltre alla stringa di formato, e possibile aggiungere alla funzione plotdiversi parametri (coppie chiave/valore) contenenti proprieta del grafico.

Alcune proprieta comuni

linewidth - larghezza della linea

markersize - dimensione del marker

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 46: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Gestione finestre di plotting

Il comando figure

Il comando figure consente di specificare la finestra di plotting dautilizzare per i prossimi comandi di plotting. Prende come parametro unintero, che indica la finestra da utilizzare.

Esempio

figure(1)plot(interval, sin(interval), ’r-;sin(x);’)figure(2)plot(interval, cos(interval), ’b-;cos(x);’)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 47: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Grafici multipli

Cosa intendiamo per grafici multipli?

Plot di piu serie di dati utilizzando un unico asse cartesiano (unicografico)

Piu grafici (assi) nella stessa figura

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 48: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il comando hold

Scopo e sintassi

Lo scopo del comando hold e quello di disegnare piu serie di dati nellostesso grafico, variando il comportamento predefinito (ovvero cancellaredi volta in volta la figura).Il comando hold accetta un parametro, chepuo valere on (non cancella la figura) o off. Se invocato senzaparametri, varia lo stato attuale.

Esempio

figure(2)hold onplot(interval, sin(interval), ’r-;sin(x);’)plot(interval, cos(interval), ’b-;cos(x);’)hold off

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 49: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il comando hold

Scopo e sintassi

Lo scopo del comando hold e quello di disegnare piu serie di dati nellostesso grafico, variando il comportamento predefinito (ovvero cancellaredi volta in volta la figura).Il comando hold accetta un parametro, chepuo valere on (non cancella la figura) o off. Se invocato senzaparametri, varia lo stato attuale.

Esempio

figure(2)hold onplot(interval, sin(interval), ’r-;sin(x);’)plot(interval, cos(interval), ’b-;cos(x);’)hold off

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 50: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il comando subplot

Scopo e sintassi

Lo scopo del comanto subplot e quello di suddividere la figura attualein sotto-grafici, e di selezionare uno di essi per poterlo utilizzare.La sintassi e subplot(nrows, ncols, index), dove nrows ed ncolsindicano la dimensione della griglia che si intende realizzare ed index el’indice del grafico attuale, partendo dal grafico in altro a sinistra (indice1) fino al grafico in basso a destra (indice nrows * ncols), facendovariare l’indice riga per riga.

Griglia di esempio

subplot(2, 3, 1) subplot(2, 3, 2) subplot(2, 3, 3)subplot(2, 3, 4) subplot(2, 3, 5) subplot(2, 3, 6)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 51: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Il comando subplot

Scopo e sintassi

Lo scopo del comanto subplot e quello di suddividere la figura attualein sotto-grafici, e di selezionare uno di essi per poterlo utilizzare.La sintassi e subplot(nrows, ncols, index), dove nrows ed ncolsindicano la dimensione della griglia che si intende realizzare ed index el’indice del grafico attuale, partendo dal grafico in altro a sinistra (indice1) fino al grafico in basso a destra (indice nrows * ncols), facendovariare l’indice riga per riga.

Griglia di esempio

subplot(2, 3, 1) subplot(2, 3, 2) subplot(2, 3, 3)subplot(2, 3, 4) subplot(2, 3, 5) subplot(2, 3, 6)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 52: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Esempio: plot multipli

figure(3)subplot(3, 1, 1)plot(interval, sin(interval), ’r-;sin(x);’)subplot(3, 1, 2)hold onplot(interval, sin(interval), ’r-;sin(x);’)plot(interval, cos(interval), ’b-;cos(x);’)hold offsubplot(3, 1, 3)plot(interval, cos(interval), ’b-;cos(x);’)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 53: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Titolo ed etichette

Funzione title

La funzione title prende come parametro una stringa ed ha l’effetto diaggiungere un titolo al grafico corrente.

Le funzioni xlabel ed ylabel

Queste due funzioni prendono come parametro una stringa edaggiungono un’etichetta all’asse x (o all’asse y).

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 54: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Gestione assi cartesiani

Funzione axis

La funzione axis prende come primo parametro un vettore di 2, 4 o 6numeri. I primi due numeri sono i limiti dell’asse x, i secondi due dell’assey, gli ultimi due dell’asse z.

Impostazione ticks

La funzione gca restituisce il riferimento agli assi correnti. Con questoriferimento si possono impostare diverse proprieta, tra cui:

XTick e YTick, vettore contenente i valori da utilizzare per i ticks

XTicklabel e YTicklabel, vettore contenente gli elementi dautilizzare come ticks

La funzione da utilizzare per impostare le proprieta e set(gca,proprieta, valore)

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 55: GNU Octave: Strutture dati e I/O

Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici

Esempio

figure(4)plot(interval, sin(interval))axis([-2 * pi, 2 * pi, -1, 1])set(gca, ’XTick’, -2 * pi: pi / 2: 2 * pi)set(gca, ’XTicklabel’, {’-2 pi’, ’- 3/2 pi’, ’- pi’,

’- pi/2’, ’0’, ’pi/2’, ’pi’, ’3/2 pi’, ’2 pi’})title(’sin(x)’)xlabel(’x’)ylabel(’sin(x)’)

Da provare

sombreropeaks

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 56: GNU Octave: Strutture dati e I/O

Riferimenti

Sito ufficiale di GNU Octave

http://www.octave.org

Documentazione

John W. Eaton et al. GNU Octave Manual -http://www.gnu.org/software/octave/doc/interpreter/

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output

Page 57: GNU Octave: Strutture dati e I/O

Licenza

Licenza Creative Commons

Questo lavoro e rilasciato sotto licenza Creative CommonsAttribution-Share Alike 2.5 Italy(http://creativecommons.org/licenses/by-sa/2.5/it/)

Significato della licenza

La presentazione e liberamente scaricabile e redistribuibile perqualsiasi fine

E necessario citare l’autore

E necessario redistribuire secondo gli stessi termini eventuali lavoriderivati da questa presentazione

Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania

GNU Octave: strutture dati e input/output