Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
GNU Octave: Strutture dati e I/O
1. GNU Octave: strutture dati e input/output
Ing. Andrea Spadaccini
a.spadaccini@diit.unict.it
Dipartimento di Ingegneria Informatica e delle Telecomunicazioni
Universit` di Catania
a
28 Aprile 2009
2. Sommario
Strutture dati avanzate
I/O di dati su file
Riepilogo gestione file WAVE
Grafici
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
3. Cell array Strutture
Parte I
Strutture dati avanzate
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
4. Cell array Strutture
Riepilogo: vettori
Vettori
I vettori (e le matrici) sono delle strutture dati che consentono di
elaborare dati di tipo omogeneo.
Problema
Esistono strutture dati che consentano di raggruppare dati non
omogenei?
Esempio: carta da gioco
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
5. Cell array Strutture
Cell array
Scopo
I cell array sono dei contenitori in grado di contenere dati di tipo
arbitrario.
Utilizzo
Si usano in maniera simile ai vettori, con la differenza che al posto
dell’operatore [] si utilizzano gli operatori () o {}
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
6. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
7. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
8. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
9. Cell array Strutture
Aggiunta di un elemento
>> arr{4} = 90
arr = {
[1,1] = stringa
[1,2] =
1 0
0 1
[1,3] =
1 3 5 7 9
[1,4] = 90
}
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
10. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
11. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
12. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
13. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
14. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
15. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
16. Cell array Strutture
Conversione di Cell Array
Conversione da Cell Array a matrice
La funzione cell2mat prende come parametro in ingresso un cell array e
tenta di convertirlo in una matrice.
Per effettuare questa conversione, tenta di concatenare tutti gli elementi
del 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
17. Cell array Strutture
Strutture
Descrizione
GNU Octave consente di realizzare strutture simili alle strutture messe a
disposizione dal linguaggio C, ovvero delle strutture dati che contengano
dati di tipo eterogeneo indicizzabili tramite notazione puntata ed
identificatori di tipo stringa.
Una differenza rispetto al C
In C ` possibile creare un nuovo tipo di dato ed usarlo per instanziare
e
diverse variabili di quel tipo.
Ci` non ` vero in Octave, in quanto le strutture sono fortemente
o e
dinamiche, ed ` addirittura possibile aggiungere campi in fase di
e
esecuzione.
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
18. Cell array Strutture
Creazione di strutture (I)
La funzione struct
La funzione struct consente di creare una struttura specificando in
maniera alternata il nome del campo ed il valore. Esempio:
>> s = struct(’a’, 1, ’b’, 2)
s =
{
a = 1
b = 2
}
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
19. Cell array Strutture
Creazione di strutture (II)
Generazione diretta
>> str.x = 1
str =
{
x = 1
}
Attenzione
Questa sintassi ` da evitare, in quanto poco esplicita. Meglio scrivere pi`
e u
codice ed aumentare la leggibilit`.
a
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
20. Cell array Strutture
Accesso agli elementi di una struttura
Notazione puntata
>> s.a + s.b
ans = 3
Funzione getfield
La funzione getfield prende come parametri una struttura ed una
chiave (o pi` chiavi, in caso di strutture annidate), restituendo l’elemento
u
corrispondente:
>> getfield(s, ’a’) + getfield(s, ’b’)
ans = 3
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
21. Cell array Strutture
Impostazione degli elementi di una struttura
Notazione puntata
>> s.dato = 1:10
s = {
a = 1
b = 2
dato = 1 2 3 4 5 6 7 8 9 10
}
Funzione setfield
Funziona in maniera analoga a getfield, con un parametro aggiuntivo
contenente il valore da impostare.
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
22. 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 ] = struttura
istruzioni
end
Esempio
>> for [value, key] = s
disp([key ’: ’ mat2str(value)]);
end
a: 1
b: 2
dato: [1,2,3,4,5,6,7,8,9,10]
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
23. Cell array Strutture
Rimozione di elementi da una struttura
Funzione rmfield
Sintassi: rmfield(s, field). Torna una nuova struttura, creata a
partire dalla struttura s eliminando il campo field.
Esempio
>> s = rmfield(s, ’dato’)
ans =
{
a = 1
b = 2
}
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
24. Cell array Strutture
Altre funzioni utili sulle strutture
isstruct(s) - torna 1 se s ` una struttura
e
isfield(s, name) - torna 1 se s ` una struttura e contiene un
e
campo denominato name
fieldnames(s) - torna un cell array contenente l’elenco dei nomi
dei campi di s
struct2cell(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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
25. Cell array Strutture
Esempio: mazzo di carte (I)
Modello
Useremo come modello del mazzo di carte un vettore di strutture carta.
Ciascuna struttura conterr` un campo seme ed un campo valore.
a
Generazione del mazzo
semi = {’C’, ’Q’, ’F’, ’P’};
valori = 1:13; carte = [];
for i = semi
for j = valori
carta = struct(’seme’, i, ’valore’, j);
carte = [carte carta];
end
end
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
26. Cell array Strutture
Esempio: mazzo di carte (II)
La prima carta
>> carte(1)
ans =
{
seme = C
valore = 1
}
Mischiamo il mazzo di carte
La funzione randperm(N) torna un vettore contenente gli interi tra 1 ed
N, in ordine casuale. Quindi...
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
27. 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 = Q
valore = 8
}
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
28. I comandi save e load I/O in stile C
Parte II
I/O di dati su file
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
29. 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 file
nomefile, utilizzando il formato MatlabTM 5.
Alcune opzioni:
-ascii salva i dati in formato ASCII (vale per scalari, vettori e
matrici)
-v4 -v6 -v7 salvano i dati in formato MatlabTM 4, 6 o 7
load
`
La sintassi ` simile a save, utilizza le stesse opzioni. E possibile omettere
e
l’elenco di variabili, ed in tal caso tutte le variabili presenti nel file
saranno caricate.
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
30. I comandi save e load I/O in stile C
Esempio
matrix = ones(3);
save m.mat matrix
exit
(caricamento nuova istanza di Octave)
load m.mat
disp(matrix)
1 1 1
1 1 1
1 1 1
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
31. 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-id
numerico, da usare nelle successive operazioni.
Opzioni:
name nome del file da aprire
mode modalit` di apertura (’r’, ’w’, ’a’ ..)
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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
32. 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 di
formato fmt ed eventuali parametri aggiuntivi
[v1, v2, .., count] = fscanf(fid, fmt, ’C’) legge dal file
fid, tornando i valori specificati in fmt nelle variabili v1, v2...
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
33. I comandi save e load I/O in stile C
Esempio
f = fopen(’out.txt’, ’w’);
for i = 1:10
fprintf(f, ’%d %dn’, i, i+1);
end
fclose(f);
f = fopen(’out.txt’, ’r’);
count = 1;
while count >= 1
[v1, v2, count] = fscanf(f, ’%d %dn’, ’C’);
if count > 1
disp(v1); disp(v2);
end
end
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
34. Octave-Forge Funzioni per l’I/O su file WAVE
Parte III
Riepilogo gestione file WAVE
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
35. Octave-Forge Funzioni per l’I/O su file WAVE
Octave-Forge
Cos’` Octave-Forge
e
`
E un insieme di pacchetti semi-ufficiali per Octave, che ne estendono le
funzionalit`.
a
Cos’` un pacchetto
e
`
E l’equivalente dei toolbox di MatlabTM , ovvero un insieme di funzioni
aventi uno scopo comune. Si presenta sotto forma di file con estensione
.tar.gz, e si installano con il comando pkg install
nomepacchetto.tar.gz
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
36. Octave-Forge Funzioni per l’I/O su file WAVE
Pacchetti di interesse
Audio - contiene funzioni per l’elaborazione di file audio (wave ed
altri)
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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
37. 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 file
filename, restituendo in y i campioni, in fs la frequenza di
campionamento in Hz, in bits il numero di bit per campione.
La funzione wavwrite
Sintassi: wavwrite(y, fs, bits, filename). Scrive i campioni
presenti nel vettore y nel file filename. Se nbits o fs non sono
specificati, di default utilizza 8000 Hz e 16 bit per campione
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
38. Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici
Parte IV
Grafici
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
39. Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici
Il sistema di plotting di GNU Octave
gnuplot
gnuplot [sic] ` il programma che si occupa di realizzare dietro le quinte i
e
grafici di Octave.
Sintassi dei comandi di plotting
Anche in questo frangente, la sintassi di Octave ` equivalente a quella di
e
MatlabTM , con la differenza che alcune opzioni avanzate non sono
implementate a causa di limitazioni di gnuplot.
Suggerimento per gli utenti GNU/Linux
Invocate Octave utilizzando il comando GNUTERM=’wxt’ octave per
ottenere grafici pi` gradevoli grazie al backend wxt di gnuplot.
u
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
40. 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 plot
genera un grafico utilizzando come ascisse gli indici del vettore e
come ordinate gli elementi del vettore.
Se invocato con un solo argomento di tipo matrice, ogni colonna
viene trattata come vettore a s` stante, e viene visualizzato
e
all’interno dello stesso grafico secondo le regole dell’invocazione con
vettore
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
41. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
42. 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) delle
ordinate.
Esempio
plot(interval, sin(interval));
plot([interval; interval]’, [sin(interval); cos(interval)]’)
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
43. 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 contiene
informazioni sullo stile della linea da utilizzare per il grafico.
Formato: ’stile colore ;etichetta;’. Ciascuna parte ` opzionale.
e
Stili
’-’ linea tratteggiata, ’.’ linea puntata, ’+’ ’*’ ’o’ ’x’ simboli
discreti.
Colori
’k’, ’r’, ’g’, ’b’, ’m’, ’c’, ’w’
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
44. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
45. Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici
Applicare stili ai grafici (III)
Propriet`
a
Oltre alla stringa di formato, ` possibile aggiungere alla funzione plot
e
diversi parametri (coppie chiave/valore) contenenti propriet` del grafico.
a
Alcune propriet` comuni
a
linewidth - larghezza della linea
markersize - dimensione del marker
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
46. 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 da
utilizzare per i prossimi comandi di plotting. Prende come parametro un
intero, 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
47. Introduzione Il comando plot, sintassi di base Stili Grafici multipli Altre funzioni sui grafici
Grafici multipli
Cosa intendiamo per grafici multipli?
Plot di pi` serie di dati utilizzando un unico asse cartesiano (unico
u
grafico)
Pi` grafici (assi) nella stessa figura
u
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
48. 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 ` quello di disegnare pi` serie di dati nello
e u
stesso grafico, variando il comportamento predefinito (ovvero cancellare
di volta in volta la figura).Il comando hold accetta un parametro, che
pu` valere on (non cancella la figura) o off. Se invocato senza
o
parametri, varia lo stato attuale.
Esempio
figure(2)
hold on
plot(interval, sin(interval), ’r-;sin(x);’)
plot(interval, cos(interval), ’b-;cos(x);’)
hold off
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
49. 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 ` quello di disegnare pi` serie di dati nello
e u
stesso grafico, variando il comportamento predefinito (ovvero cancellare
di volta in volta la figura).Il comando hold accetta un parametro, che
pu` valere on (non cancella la figura) o off. Se invocato senza
o
parametri, varia lo stato attuale.
Esempio
figure(2)
hold on
plot(interval, sin(interval), ’r-;sin(x);’)
plot(interval, cos(interval), ’b-;cos(x);’)
hold off
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
50. 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 ` quello di suddividere la figura attuale
e
in sotto-grafici, e di selezionare uno di essi per poterlo utilizzare.
La sintassi ` subplot(nrows, ncols, index), dove nrows ed ncols
e
indicano la dimensione della griglia che si intende realizzare ed index ` e
l’indice del grafico attuale, partendo dal grafico in altro a sinistra (indice
1) fino al grafico in basso a destra (indice nrows * ncols), facendo
variare 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
51. 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 ` quello di suddividere la figura attuale
e
in sotto-grafici, e di selezionare uno di essi per poterlo utilizzare.
La sintassi ` subplot(nrows, ncols, index), dove nrows ed ncols
e
indicano la dimensione della griglia che si intende realizzare ed index ` e
l’indice del grafico attuale, partendo dal grafico in altro a sinistra (indice
1) fino al grafico in basso a destra (indice nrows * ncols), facendo
variare 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
52. 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 on
plot(interval, sin(interval), ’r-;sin(x);’)
plot(interval, cos(interval), ’b-;cos(x);’)
hold off
subplot(3, 1, 3)
plot(interval, cos(interval), ’b-;cos(x);’)
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
53. 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 di
aggiungere un titolo al grafico corrente.
Le funzioni xlabel ed ylabel
Queste due funzioni prendono come parametro una stringa ed
aggiungono un’etichetta all’asse x (o all’asse y).
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
54. 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 6
numeri. I primi due numeri sono i limiti dell’asse x, i secondi due dell’asse
y, gli ultimi due dell’asse z.
Impostazione ticks
La funzione gca restituisce il riferimento agli assi correnti. Con questo
riferimento si possono impostare diverse propriet`, tra cui:
a
XTick e YTick, vettore contenente i valori da utilizzare per i ticks
XTicklabel e YTicklabel, vettore contenente gli elementi da
utilizzare come ticks
La funzione da utilizzare per impostare le propriet` ` set(gca,
ae
propriet`, valore)
a
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
55. 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
sombrero
peaks
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
56. 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 - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output
57. Licenza
Licenza Creative Commons
Questo lavoro ` rilasciato sotto licenza Creative Commons
e
Attribution-Share Alike 2.5 Italy
(http://creativecommons.org/licenses/by-sa/2.5/it/)
Significato della licenza
La presentazione ` liberamente scaricabile e redistribuibile per
e
qualsiasi fine
`
E necessario citare l’autore
`
E necessario redistribuire secondo gli stessi termini eventuali lavori
derivati da questa presentazione
Ing. Andrea Spadaccini DIIT - Universit` degli Studi di Catania
a
GNU Octave: strutture dati e input/output