38
Fondamenti di Informatica Gestione dei File in MATLAB Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Gestione dei file in MATLAB

Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

FondamentidiInformaticaGest ionede i F i le in MATLAB

Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2016/17

GestionedeifileinMATLAB

Page 2: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

OUTLINE

•Caratteristiche dei File

•Apertura/Chiusura di File

•Scrittura/Lettura da File

• Importare Dati da File

GestionedeifileinMATLAB 02/38

Page 3: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

CaratteristichedeiFile• I file possono essere visti come dei contenitoripermanenti di informazioni

• Il Sistema Operativo si occupa della loro gestioneed offre la possibilità, agli sviluppatori, di:• Apertura/chiusura di un file• Lettura/scrittura di un file• Ecc.

GestionedeifileinMATLAB 03/38

Page 4: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

Apertura/ChiusuradiFile– 1/2fid = fopen(percorso_del_file, modalita_apertura)

• Tramite fopen è possibile aprire un file, memorizzato nel percorso indicato dapercorso_del_file nella modalità d’apertura specificata damodalita_apertura

• La modalità di apertura (modalita_apertura) può essere:• Scrittura(modalita_apertura =‘w’)• Lettura(modalita_apertura =‘r’)• Scritturaelettura(modalita_apertura =‘w+’ emodalita_apertura =‘r+’)• Append (modalita_apertura = ‘a’):apreunfileesistenteocreaunnuovofileinscritturaconposizionamentoallafinedelfile.

• La funzione fopen restituisce il valore fid, che è un identificatore associato al fileaperto

Sintassi

GestionedeifileinMATLAB 04/38

Page 5: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

Apertura/ChiusuradiFile– 2/2fclose(fid)

•Chiude il file identificato da fid

• Esempio utilizzo fopen e fclose

Sintassi

>> fid = fopen('C:\test.txt', 'r');>> fclose(fid);

GestionedeifileinMATLAB 05/38

Page 6: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

Apertura/ChiusuradiFile– 2/2fclose(fid)

•Chiude il file identificato da fid

• Esempio utilizzo fopen e fclose

Sintassi

>> fid = fopen('C:\test.txt', 'r');>> fclose(fid);

• Percorso: C:\test.txt• Modalità di apertura: lettura (‘r’)

GestionedeifileinMATLAB 06/38

Page 7: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ScritturadiunFile(1/2)• Alcune funzioni per la scrittura su file• Il file deve essere precedentemente aperto mediante lafopen

• fwrite• Scrive un array, passato come parametro, su un filespecificato• help fwrite per maggiori dettagli

• fprintf• Scrive su file, secondo un formato specificato dall’utente• help fpritnf per maggiori dettagli

GestionedeifileinMATLAB 07/38

Page 8: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ScritturadiunFile(2/2)• cont = fwrite(fid, array, formato)• cont: indica il numero di valori effettivamente scritti nelfile• fid: identificatore del file su cui scrivere (nb: il file deveessere stato aperto in precedenza)• array: array contenente i dati da salvare• formato: specifica il formato in cui i dati verrannosalvati. Formati principali:• char, int8, int16, int32, int64, float32, float64 (i numeriindicano il numero di bit usati per rappresentare ivalori)

GestionedeifileinMATLAB 08/38

Page 9: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

LetturadaFile(1/2)• Alcune funzioni per la lettura da file• Il file deve essere precedentemente aperto mediante lafopen

• fread• Legge un array, di lunghezza specificata, da un file indicatotramite parametro• help fread per maggiori dettagli

• fscanf• Legge da file, specificando esplicitamente il formato di talidati• help fscanf per maggiori dettagli

GestionedeifileinMATLAB 09/38

Page 10: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

LetturadaFile(2/2)• [array cont]=fread(fid, size, formato)• cont, fid, e formato hanno il significato per fwrite• I dati letti vengono memorizzati in array, e size è ladimensione dei dati da leggere. Tre possibilità• n: legge esattamente n valori. Dopo l’esecuzione diquesta istruzione array sarà un vettore colonnacontenente questi n valori• Inf: legge fino alla fine del file. Dopo l’esecuzione diquesta istruzione array sarà un vettore colonnacontenente tutti i valori letti• [n m]: legge esattamente nxm valori. Dopol’esecuzione di questa istruzione array sarà unamatrice nxm contenente tutti i valori letti

GestionedeifileinMATLAB 10/38

Page 11: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

EsempiodiScritturaeLetturadaFile(1/2)% genera un vettore riga contenente numeri casualia=rand(1,1000);%richiede all'utente il nome del filefilename=input('inserisci un nome di file ');[fid msg]=fopen(filename, 'w'); %apre il file%se il file e` stato aperto con successo...if(fid>0)

cont=fwrite(fid,a,'float64'); %scrive a su file%informa l'utente dell'avvenuta scritturadisp([num2str(cont) ' valori scritti...']);fclose(fid); %chiude il file

elsedisp(msg);

end

GestionedeifileinMATLAB 11/38

Page 12: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

EsempiodiScritturaeLetturadaFile(2/2)% genera un vettore riga contenente numeri casualia=rand(1,1000);%richiede all'utente il nome del filefilename=input('inserisci un nome di file ');[fid msg]=fopen(filename, 'w'); %apre il file%se il file e` stato aperto con successo...if(fid>0)

[vett cont]=fread(fid,[1 1000],'float64');%informa l'utente dell'avvenuta letturadisp([num2str(cont) ' valori letti...']);fclose(fid); %chiude il file

elsedisp(msg);

end

GestionedeifileinMATLAB 12/38

Page 13: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 1/4• Con la funzione importdata è possibile diimportare dati da diversi tipi di file:• Testuali• CSV• Ecc.

• Non è necessario che il file sia stato apertoprecedentemente (tramite fopen)

• help importdata per maggiori dettagli

GestionedeifileinMATLAB 13/38

Page 14: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 2/4

>> A = importdata(‘matrice.txt’);

A =

1 4 64 2 56 5 4

1, 4, 64, 2, 56, 5, 4 matrice.txt

Esempio1

GestionedeifileinMATLAB 14/38

Page 15: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 2/4

>> A = importdata(‘matrice.txt’);

A =

1 4 64 2 56 5 4

1, 4, 64, 2, 56, 5, 4 matrice.txt

Lavirgola(simbolo,)èinterpretatacomeseparatoredi

colonne

Esempio1

GestionedeifileinMATLAB 15/38

Page 16: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 3/4

>> A = importdata(‘matrice.txt’, ‘ ’);

A =

1 4 64 2 56 5 4

1 4 64 2 56 5 4 matrice.txt

Esempio2

GestionedeifileinMATLAB 16/38

Page 17: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 3/4

>> A = importdata(‘matrice.txt’, ‘ ’);

A =

1 4 64 2 56 5 4

1 4 64 2 56 5 4 matrice.txt

Èpossibilespecificareancheundelimitatoredicolonneinimportdata

(spazio nell’esempio)

Esempio2

GestionedeifileinMATLAB 17/38

Page 18: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4Studenti/Voti esame Esame1 Esame2 Esame3 Esame4 Esame5

Matricola1 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

Esempio3

GestionedeifileinMATLAB 18/38

Page 19: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4

Studenti/Voti, E1, E2, E3, E4, E5Matricola 1, 28, 25, 30, 23, 19Matricola 2, 24, 27, 28, 21, 24Matricola 3, 25, 25, 19, 18, 22Matricola 4, 21, 30, 30, 22, 30

vs.txt

Studenti/Voti esame Esame1 Esame2 Esame3 Esame4 Esame5

Matricola1 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

Esempio3

GestionedeifileinMATLAB 19/38

Page 20: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4

Studenti/Voti, E1, E2, E3, E4, E5Matricola 1, 28, 25, 30, 23, 19Matricola 2, 24, 27, 28, 21, 24Matricola 3, 25, 25, 19, 18, 22Matricola 4, 21, 30, 30, 22, 30

vs.txt

Nomedelfile

Studenti/Voti esame Esame1 Esame2 Esame3 Esame4 Esame5

Matricola1 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

Esempio3

GestionedeifileinMATLAB 20/38

Page 21: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4

>> file = importdata(‘vs.txt’);file =

data: [4x5 double]textdata: {5x6 cell}

Studenti/Voti, E1, E2, E3, E4, E5Matricola 1, 28, 25, 30, 23, 19Matricola 2, 24, 27, 28, 21, 24Matricola 3, 25, 25, 19, 18, 22Matricola 4, 21, 30, 30, 22, 30

vs.txt

Esempio3

GestionedeifileinMATLAB 21/38

Page 22: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4

>> file = importdata(‘vs.txt’);file =

data: [4x5 double]textdata: {5x6 cell}

Studenti/Voti, E1, E2, E3, E4, E5Matricola 1, 28, 25, 30, 23, 19Matricola 2, 24, 27, 28, 21, 24Matricola 3, 25, 25, 19, 18, 22Matricola 4, 21, 30, 30, 22, 30

vs.txt

Tuttiidatinumericivengonoimmagazzinatiindata

Esempio3

GestionedeifileinMATLAB 22/38

Page 23: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4

>> file = importdata(‘vs.txt’);file =

data: [4x5 double]textdata: {5x6 cell}

Studenti/Voti, E1, E2, E3, E4, E5Matricola 1, 28, 25, 30, 23, 19Matricola 2, 24, 27, 28, 21, 24Matricola 3, 25, 25, 19, 18, 22Matricola 4, 21, 30, 30, 22, 30

vs.txt

textdata conterràtuttiidatitestuali(es.,intestazione

dellerigheecolonne)

Esempio3

GestionedeifileinMATLAB 23/38

Page 24: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4>> file = importdata(‘vs.txt’);

file = data: [4x5 double]

textdata: {5x6 cell}

>> file.textdata

ans =

'Studenti/Voti' ' E1' ' E2' ' E3' ' E4' ' E5''Matricola 1' '' '' '' '' '' 'Matricola 2' '' '' '' '' '' 'Matricola 3' '' '' '' '' '' 'Matricola 4' '' '' '' '' ''

Esempio3

GestionedeifileinMATLAB 24/38

Page 25: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFile– 4/4>> file = importdata(‘vs.txt’);

file = data: [4x5 double]

textdata: {5x6 cell}

>> A = file.data

A =

28 25 30 23 1924 27 28 21 2425 25 19 18 2221 30 30 22 30

Esempio3

GestionedeifileinMATLAB 25/38

Page 26: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

ImportareDatidaFileTramiteInterfacciaGrafica

• Tramite uiimport è possibile selezionare, tramiteinterfaccia grafica, diverse opzioni per l’import didati:• Tipo di separatore di colonna• Quante righe/colonne occupa l’intestazione• Ecc.

• Non è necessario che il file sia stato apertoprecedentemente (tramite fopen)

GestionedeifileinMATLAB 26/38

Page 27: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica

GestionedeifileinMATLAB 27/38

Page 28: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica

‘data.txt’ èilpercorsodelfile

GestionedeifileinMATLAB 28/38

Page 29: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 29/38

Page 30: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Selezionedelseparatoredicolonne

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 30/38

Page 31: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Numerodilineedell’intestazione

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 31/38

Page 32: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Anteprimadelcontenutodelfile

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 32/38

Page 33: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Anteprimadiciòcheverràimportato

(data)

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 33/38

Page 34: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Anteprimadiciòcheverràimportato

(textdata)

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 34/38

Page 35: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 35/38

Page 36: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Selezioniamocosaimportareall’internodelnostroworkspace

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 36/38

Page 37: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

>> uiimport('data.txt')

Anteprimadellavariabileselezionata

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 37/38

Page 38: Argomento11 Gestione dei file - UNISAcesposito/materiale/lezioni/Lezione_11.pdf · aperto Sintassi Gestione dei file in MATLAB 04/38. Apertura/Chiusura di File –2/2 fclose(fid)

◦ Cliccando su Finish, nel nostro Workspace diMATLAB, saranno importate le variabiliselezionate ed avranno i valori vistinell’anteprima

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio3

GestionedeifileinMATLAB 38/38