Fondamenti di Informatica Prof. Arcangelo Castiglione A.A. 2017/18
OUTLINE Gestione File Grafici
OUTLINE Gestione File Grafici
I File I file possono essere visti come contenitori permanenti di informazioni Il Sistema Operativo si occupa della loro gestione, offrendo ai programmatori la possibilità di Aprire/Chiudere un File Leggere/Scrivere un File Etc
I File Potrebbe essere necessario Leggere un file e memorizzarlo in una variabile Scrivere in un file MATLAB fornisce diversi meccanismi per leggere/scrivere file
Importare Dati da File Mediante la funzione importdata è possibile importare nel Workspace i dati contenuti in diversi tipi di file Testuali Comma-Separated Values (CSV) Immagini Etc help importdata per maggiori dettagli N.B. Per importare nel Workspace di MATLAB dati letti da file, si consiglia FORTEMENTE l utilizzo di questa funzione
Importare Dati da File Mediante la funzione importdata è possibile importare nel Workspace i dati contenuti in diversi tipi di file Testuali Utilizzeremo solo dati Comma-Separated Values (CSV) testuali Immagini Etc help importdata per maggiori dettagli N.B. Per importare nel Workspace di MATLAB dati letti da file, si consiglia FORTEMENTE l utilizzo di questa funzione
Creare un File Contenente una Matrice 1. Digitare il comando edit 2. Digitare la matrice nel file aperto dal comando edit, ad es 1, 4, 6 4, 2, 5 6, 5, 4
Creare un File Contenente una Matrice (Ambiente Windows) 3. Salvare il file nella Current Folder, premendo contemporaneamente i tasti «Ctrl» «S» 4. ò Current Folder di MATLAB Nome del file, con estensione.txt Selezionare «All Files (*.*)»
Creare un File Contenente una Matrice (Ambiente Mac) 3. Salvare il file, premendo contemporaneamente i tasti «cmd» «S» 4. ò Nome del file, con estensione.txt Current Folder di MATLAB Selezionare «All Files (*.*)»
Importare Dati Numerici da File Esempio 1 1, 4, 6 4, 2, 5 6, 5, 4 matrice.txt >> A = importdata('matrice.txt'); A = 1 4 6 4 2 5 6 5 4
Importare Dati Numerici da File Esempio 1 1, 4, 6 4, 2, 5 6, 5, 4 matrice.txt >> A = importdata('matrice.txt'); A = 1 4 6 Nome della 4 variabile 2 in cui 5 verranno 6 memorizzati 5 i 4 dati Nome del file da importare
Importare Dati Numerici da File Esempio 1 1, 4, 6 4, 2, 5 6, 5, 4 matrice.txt >> A = importdata('matrice.txt'); A = 1 4 6 4 2 5 6 5 4 La virgola (simbolo,) è interpretata come separatore di colonne
Importare Dati Numerici da File Esempio 2 1 4 6 4 2 5 6 5 4 matrice.txt >> A = importdata('matrice.txt', ' '); A = 1 4 6 4 2 5 6 5 4
Importare Dati Numerici da File Esempio 2 1 4 6 4 2 5 6 5 4 matrice.txt >> A = importdata('matrice.txt', ' '); A = 1 4 6 4 2 5 6 5 4 È possibile scegliere, mediante un opportuno parametro della funzione importdata, anche un delimitatore di colonne diverso dalla virgola (in questo esempio, il delimitatore è uno spazio)
Importare Dati Complessi da File Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Matricola 1 28 25 30 23 19 Matricola 2 24 27 28 21 24 Matricola 3 25 25 19 18 22 Matricola 4 21 30 30 22 30 Esempio 3
Importare Dati Complessi da File Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Matricola 1 28 25 30 23 19 Matricola 2 24 27 28 21 24 Matricola 3 25 25 19 18 22 Matricola 4 21 30 30 22 30 Esempio 3 File contenente dati testuali e dati numerici Studenti/Voti, E1, E2, E3, E4, E5 Matricola 1, 28, 25, 30, 23, 19 Matricola 2, 24, 27, 28, 21, 24 Matricola 3, 25, 25, 19, 18, 22 Matricola 4, 21, 30, 30, 22, 30 vs.txt
Importare Dati Complessi da File Studenti/Voti esame Esame 1 Esame 2 Esame 3 Esame 4 Esame 5 Matricola 1 28 25 30 23 19 Matricola 2 24 27 28 21 24 Matricola 3 25 25 19 18 22 Esempio 3 Matricola 4 21 30 30 22 30 Nome del file Studenti/Voti, E1, E2, E3, E4, E5 Matricola 1, 28, 25, 30, 23, 19 Matricola 2, 24, 27, 28, 21, 24 Matricola 3, 25, 25, 19, 18, 22 Matricola 4, 21, 30, 30, 22, 30 vs.txt
Importare Dati Complessi da File Esempio 3 La variabile file è di tipo struct vs.txt Studenti/Voti, E1, E2, E3, E4, E5 Matricola 1, 28, 25, 30, 23, 19 Matricola 2, 24, 27, 28, 21, 24 Matricola 3, 25, 25, 19, 18, 22 Matricola 4, 21, 30, 30, 22, 30 >> file = importdata('vs.txt'); file = data: [4x5 double] textdata: {5x6 cell}
Importare Dati Complessi da File >> file = importdata('vs.txt'); file = data: [4x5 double] textdata: {5x6 cell} Esempio 3 Studenti/Voti, E1, E2, E3, E4, E5 Matricola 1, 28, 25, 30, 23, 19 Matricola 2, 24, 27, 28, 21, 24 Matricola 3, 25, 25, 19, 18, 22 Matricola 4, 21, 30, 30, 22, 30 vs.txt Tutti i dati numerici vengono memorizzati in data
Importare Dati Complessi da File >> file = importdata('vs.txt'); file = data: [4x5 double] textdata: {5x6 cell} Studenti/Voti, E1, E2, E3, E4, E5 Matricola 1, 28, 25, 30, 23, 19 Matricola 2, 24, 27, 28, 21, 24 Matricola 3, 25, 25, 19, 18, 22 Matricola 4, 21, 30, 30, 22, 30 Tutti i dati testuali (ad es., intestazione delle righe e delle colonne) vengono memorizzati in textdata Esempio 3 vs.txt
Importare Dati Complessi da File >> file = importdata('vs.txt'); Esempio 3 file = data: [4x5 double] textdata: {5x6 cell} >> file.textdata Per accedere ai dati testuali ans = 'Studenti/Voti' ' E1' ' E2' ' E3' ' E4' ' E5' 'Matricola 1' '' '' '' '' '' 'Matricola 2' '' '' '' '' '' 'Matricola 3' '' '' '' '' '' 'Matricola 4' '' '' '' '' ''
Importare Dati Complessi da File >> file = importdata('vs.txt'); file = data: [4x5 double] textdata: {5x6 cell} Esempio 3 >> A = file.data A = Per accedere ai dati numerici 28 25 30 23 19 24 27 28 21 24 25 25 19 18 22 21 30 30 22 30
Importare Dati da File Tramite Interfaccia Grafica Tramite la funzione uiimport è possibile selezionare, tramite interfaccia grafica, diverse opzioni per l import dei dati Tipo diseparatore dicolonna Numero di righe/colonne che occupa l intestazione Etc help uiimport per maggiori dettagli
Importare Dati da File Tramite Interfaccia Grafica >> uiimport('data.txt')
Importare Dati da File Tramite Interfaccia Grafica >> uiimport('data.txt') N.B. 'data.txt' rappresenta il percorso (path relativo o assoluto) verso il file chiamato data.txt
Importare Dati da File Tramite Interfaccia Grafica Passo 1 >> uiimport('data.txt')
Importare Dati da File Tramite Interfaccia Grafica Passo 1 >> uiimport('data.txt') Impostare l opzione Delimited
Importare Dati da File Tramite Interfaccia Grafica Passo 1 >> uiimport('data.txt') Selezionare con il mouse il contenuto numerico (matrice) che si intende importare nel Workspace
Importare Dati da File Tramite Interfaccia Grafica Passo 1 >> uiimport('data.txt') Impostare Numeric Matrix
Importare Dati da File Tramite Interfaccia Grafica Passo 2 >> uiimport('data.txt')
Importare Dati da File Tramite Interfaccia Grafica Passo 2 >> uiimport('data.txt') Cliccare su Import Selection, per importare i dati nel Workspace
Importare Dati da File Tramite Interfaccia Grafica Passo 3 Infine, chiudendo la finestra precedente, nel Workspace di MATLAB verranno visualizzati i dati appena importati
OUTLINE Gestione File Grafici
Grafici in MATLAB plot(x, y) MATLAB genera un grafico basandosi sull array x per l asse X e sull array y per l asse Y N.B. Gli array x ed y devono essere della stessa lunghezza plot(x) MATLAB genera un grafico lineare basandosi sull array x sia per l asse X che per l asse Y Ciascun punto ha lo stesso valore sia per la coordinata sull asse X che per quellasull asse Y
Grafici in MATLAB Esempio 1 (array x su asse X ed asse Y) x = [1:1:20] plot(x)
Grafici in MATLAB Esempio 2 (array x su asse X ed asse Y) x = [2:2:20] plot(x)
Grafici in MATLAB Esempio 3 (array x su asse X ed array y su asse Y) x = linspace(-pi, pi); y = cos(x); plot(x,y)
Grafici in MATLAB Possiamo salvare un grafico per poterlo usare altrove (ad esempio in Microsoft Word, OpenOffice, TeX, etc) Andando sul menu «File» e «Save As»
Grafici in MATLAB Possiamo salvare un grafico per poterlo usare altrove (ad esempio in Microsoft Word, OpenOffice, TeX, etc) Andando sul menu «File» e «Save As»
Grafici in MATLAB Possiamo salvare un grafico per poterlo usare altrove (ad esempio in Microsoft Word, OpenOffice, TeX, etc) Andando sul menu «File» e «Save As» Alcuni formati supportati: JPEG BITMAP PDF TIFF
Grafici in MATLAB Possiamo salvare un grafico per poterlo usare altrove (ad esempio in Microsoft Word, OpenOffice, TeX, etc.) Andando sul menu «File» Risultato: e «Save As»
Grafici in MATLAB Colori e Stile di Indicatori e Linee Mediante la funzione plot è anche possibile personalizzare il grafico per quanto riguarda Colore Linea e Indicatori (detti anche marcatori o simboli) Stile Linea (tratteggiata, etc) Indicatori (cerchio, puntino, etc) plot(x, y, personalizzazione)
Grafici in MATLAB Colori e Stile di Indicatori e Linee plot(x, y, personalizzazione) Esempio di personalizzazione plot(x, y, 'r^:') La stringa di personalizzazione r^: è composta da tre parti r ^ : Indica il colore di linea e indicatori Colore rosso (red) in questo esempio Indica lo stile degli indicatori Triangolo in questo esempio Indica lo stile della linea Punteggiata in questo esempio
Grafici in MATLAB Colori e Stile di Indicatori e Linee plot(x, y, personalizzazione) Esempio di personalizzazione plot(x, y, 'r^:') 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1-1 -4-3 -2-1 0 1 2 3 4-1.6-1.5-1.4-1.3-1.2-1.1-1 -0.9-0.8-0.7-0.6 Risultato plot Zoom Risultato plot
Grafici in MATLAB Colori e Stile di Indicatori e Linee plot(x, y, '123') 1 Colori b blue g green (verde) r red (rosso) c cyan (ciano) m magenta y yellow (giallo) k black (nero) w white (bianco) default 2 Indicatori. punto o cerchio x croce a x + più s square (quadrato) ^ triangolo * stella h hexagon (esagono) p Pentagramma nessun indicatore 3 Stile Linea - continua : punteggiata -. punto+tratteggio -- tratteggiata nessuna linea
Grafici in MATLAB Colori e Stile di Indicatori e Linee plot(x, y, '123') 1 Colori b blue g green (verde) r red (rosso) c cyan (ciano) m magenta y yellow (giallo) k black (nero) w white (bianco) default 2 Indicatori 3 Stile Linea. punto - continua o cerchio : punteggiata Non tutti i parametri sono x croce a x -. punto+tratteggio obbligatori + più -- tratteggiata s square (quadrato) nessuna linea ^ triangolo * stella h hexagon (esagono) p Pentagramma nessun indicatore
Grafici in MATLAB Colori e Stile di Indicatori e Linee plot(x, y, '123') 1 Colori b blue g green (verde) r red (rosso) c cyan (ciano) m magenta y yellow (giallo) k black (nero) w white (bianco) default 2 Indicatori. punto o cerchio x croce a x + più s square (quadrato) ^ triangolo * stella h hexagon (esagono) p Pentagramma nessun indicatore 3 Stile Linea - continua : punteggiata -. punto+tratteggio -- tratteggiata nessuna linea
Grafici in MATLAB Colori e Stile di Indicatori e Linee Esempi (sono stati usati x ed y definiti nell Esempio 3) 1. plot(x,y,'gs--') 2. plot(x,y,'mp') 3. plot(x,y,'kh:') 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 -4-3 -2-1 0 1 2 3 4-1 -4-3 -2-1 0 1 2 3 4-1 -4-3 -2-1 0 1 2 3 4 1 2 3
Grafici in MATLAB Grafico con Informazioni Multiple Con il comando hold on è possibile creare un grafico che rappresenti più informazioni, mediante più linee e/o indicatori 1 x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = sin(x pi / 4); hold on; plot(x,y1,'m^--'); plot(x,y2,'r*'); hold off; 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7
Grafici in MATLAB Grafico con Informazioni Multiple Con il comando hold on è possibile creare un grafico che rappresenti più informazioni, mediante più linee e/o indicatori x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = sin(x pi / 4); hold on; plot(x,y1,'m^--'); plot(x,y2,'r*'); hold off; 1 0.8 0.6 0.4 0.2 0-0.2-0.4-0.6-0.8 Da ora in poi tutti i grafici saranno sovraimpressi al grafico di partenza -1 0 1 2 3 4 5 6 7
Grafici in MATLAB Grafico con Informazioni Multiple Con il comando hold on è possibile creare un grafico che rappresenti più informazioni, mediante più linee e/o indicatori x = linspace(0, 2*pi, 100); y1 = sin(x); y2 = sin(x pi / 4); hold on; plot(x,y1,'m^--'); plot(x,y2,'r*'); hold off; -0.2-0.4-0.6 Annulla l effetto di -0.8hold on 1 0.8 0.6 0.4 0.2 e genera un nuovo grafico, cancellando quelli vecchi 0-1 0 1 2 3 4 5 6 7
Grafici in MATLAB Alcune Note Ogni volta che si utilizza il comando plot, esso sovrascrive l ultimo grafico che è stato creato A meno che non venga utilizzato il comando hold on È possibile creare/gestire più istanze di grafici contemporaneamente, senza sovrascriverne nessuna, mediante il comando figure help figure per maggiori informazioni Per chiudere tutte le istanze, si può usare il comando close all
Grafici in MATLAB Personalizzazione Titoli ed Etichette Assi MATLAB permette di aggiungere varie etichette al grafico Esempio title('titolo') Aggiunge/Modifica l etichetta relativa al titolo del grafico xlabel('asse x') Aggiunge/Modifica l etichetta relativa all asse X ylabel('asse y') Aggiunge/Modifica l etichetta relativa all asse Y 1 0.8 0.6 0.4 0.2 titolo linea 1 linea 2 linea 3 legend('linea 1', 'linea 2', 'linea 3') Aggiunge laleggendaal grafico asse y 0-0.2-0.4-0.6-0.8-1 0 1 2 3 4 5 6 7 asse x
Grafici in MATLAB MATLAB permette di creare più sotto-grafici all interno di una singola figura, mediante il comando subplot Esempio m = 2, n = 3 subplot(m, n, p) Crea una figura partizionata come una griglia, inizialmente vuota, composta da m righe ed n colonne p indica una posizione (indice) all interno della griglia (nell esempio, p varia da 1 a 6) Una volta specificata con subplot la posizione all interno della griglia, sarà possibile utilizzare la funzione plot (con gli opportuni parametri) per creareun sotto-graficoin tale posizione 1 2 3 4 5 6
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3);
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1);
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); Crea una griglia di 2 righe e 2 colonne, ed imposta la posizione corrente a 1
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); 1 2 Crea una griglia di 2 righe e 2 colonne, ed imposta la posizione corrente a 1 3 4
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); plot(x,y1,'g^:'); Crea il primo grafico nella posizione 1
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); plot(x,y1,'g^:'); subplot(2,2,2); plot(x,y2,'r*--'); 1 2 3 4
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); plot(x,y1,'g^:'); subplot(2,2,2); plot(x,y2,'r*--'); subplot(2,2,3); plot(x,y3,'k');
Grafici in MATLAB x = linspace(0,2*pi,100); y1 = sin(x); y2 = sin(x-pi/4); y3 = sin(x-pi/2); y4 = sin(x-2*pi/3); hold on; subplot(2,2,1); plot(x,y1,'g^:'); subplot(2,2,2); plot(x,y2,'r*--'); subplot(2,2,3); plot(x,y3,'k'); subplot(2,2,4); plot(x,y4,'m+-.'); hold off; Output Finale:
Grafici in MATLAB MATLAB fornisce anche un editor visuale per modificare le varie proprietà delgrafico Titolo Etichette assi Griglie Font Tipo di grafico
Grafici in MATLAB MATLAB fornisce anche un editor visuale per modificare le varie proprietà delgrafico Titolo Etichette assi Griglie Font Tipo di grafico Cliccando due volte sul grafico si possono modificare le proprietà ad esso Gestione relative File e Grafici in MATLAB
Grafici in MATLAB Altre Tipologie di Grafici Esempi Graficoa Barre Istogramma Graficoa Torta x = -2:0.2:2; y = x.* x; bar(x, y, 'r'); title('grafico a Barre'); y = [ 1 2 2 3 3 3 4 4 4 4 ]; hist(y); title('istogramma'); x = [60 30 10]; pie(x) title('grafico a Torta');