GNU Octave: strutture dati e input/output
Ing. Andrea [email protected]
Dipartimento di Ingegneria Informatica e delle TelecomunicazioniUniversita di Catania
28 Aprile 2009
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
Cell array Strutture
Parte I
Strutture dati avanzate
Ing. Andrea Spadaccini DIIT - Universita degli Studi di Catania
GNU Octave: strutture dati e input/output
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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