GNU Octave: strutture dati e input/output

                  Ing. Andrea Spadaccini
              a.spadaccini@diit.unict....
Sommario




         Strutture dati avanzate
         I/O di dati su file
         Riepilogo gestione file WAVE
         Gr...
Cell array                                                                               Strutture




                   ...
Cell array                                                                           Strutture




Riepilogo: vettori


  ...
Cell array                                                                            Strutture




Cell array



  Scopo
...
Cell array                                                                                  Strutture




Differenza tra gl...
Cell array                                                                Strutture




Creazione di Cell Array

  >> a = ...
Cell array                                                                Strutture




Creazione di Cell Array

  >> a = ...
Cell array                                                                Strutture




Aggiunta di un elemento


  >> arr...
Cell array                                                                Strutture




Selezione di elementi

  >> arr{1}...
Cell array                                                                Strutture




Selezione di elementi

  >> arr{1}...
Cell array                                                                Strutture




Selezione di elementi

  >> arr{1}...
Cell array                                                                        Strutture




Eliminazione di elementi

...
Cell array                                                                        Strutture




Eliminazione di elementi

...
Cell array                                                                        Strutture




Eliminazione di elementi

...
Cell array                                                                                             Strutture




Conve...
Cell array                                                                          Strutture




Strutture

  Descrizione...
Cell array                                                                       Strutture




Creazione di strutture (I)
...
Cell array                                                                          Strutture




Creazione di strutture (...
Cell array                                                                           Strutture




Accesso agli elementi d...
Cell array                                                                                    Strutture




Impostazione d...
Cell array                                                                           Strutture




Iterazione degli elemen...
Cell array                                                                      Strutture




Rimozione di elementi da una...
Cell array                                                                              Strutture




Altre funzioni utili...
Cell array                                                                        Strutture




Esempio: mazzo di carte (I...
Cell array                                                                        Strutture




Esempio: mazzo di carte (I...
Cell array                                                                 Strutture




Esempio: mazzo di carte (III)
  C...
I comandi save e load                                                                      I/O in stile C




            ...
I comandi save e load                                                             I/O in stile C




I comandi save e load...
I comandi save e load                                                 I/O in stile C




Esempio


  matrix = ones(3);
  s...
I comandi save e load                                                            I/O in stile C




Apertura e chiusura

 ...
I comandi save e load                                                              I/O in stile C




Operazioni su file


...
I comandi save e load                                                 I/O in stile C




Esempio

  f = fopen(’out.txt’, ’...
Octave-Forge                                                   Funzioni per l’I/O su file WAVE




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




Octave-Forge


  Cos’` Octav...
Octave-Forge                                                    Funzioni per l’I/O su file WAVE




Pacchetti di interesse
...
Octave-Forge                                             Funzioni per l’I/O su file WAVE




I/O su file WAVE


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



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




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




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




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




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




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




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




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




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




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




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




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




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




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




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




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




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




Ese...
Riferimenti



  Sito ufficiale di GNU Octave
  http://www.octave.org

  Documentazione
  John W. Eaton et al. GNU Octave Ma...
Licenza

  Licenza Creative Commons
  Questo lavoro ` rilasciato sotto licenza Creative Commons
                 e
  Attri...
Upcoming SlideShare
Loading in …5
×

GNU Octave: Strutture dati e I/O

2,274 views

Published on

Second part of the introduction to GNU Octave: data structures, I/O and plotting (in Italian)

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,274
On SlideShare
0
From Embeds
0
Number of Embeds
38
Actions
Shares
0
Downloads
34
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

GNU Octave: Strutture dati e I/O

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×