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

Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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 . 2017/18

GestionedeifileinMATLAB

Page 2: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

OUTLINE

•Caratteristiche dei File

•Apertura/Chiusura di File

•Scrittura/Lettura da File

• Importare Dati da File

GestionedeifileinMATLAB 02/38

Page 3: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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, ’r'); %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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica

GestionedeifileinMATLAB 27/38

Page 28: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica

‘data.txt’ èilpercorsodelfile

GestionedeifileinMATLAB 28/38

Page 29: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 29/38

Page 30: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Selezionedelseparatoredicolonne

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 30/38

Page 31: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Numerodilineedell’intestazione

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 31/38

Page 32: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Anteprimadelcontenutodelfile

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 32/38

Page 33: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Anteprimadiciòcheverràimportato

(data)

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 33/38

Page 34: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Anteprimadiciòcheverràimportato

(textdata)

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1

GestionedeifileinMATLAB 34/38

Page 35: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 35/38

Page 36: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Selezioniamocosaimportareall’internodelnostroworkspace

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 36/38

Page 37: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

>> uiimport('data.txt')

Anteprimadellavariabileselezionata

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2

GestionedeifileinMATLAB 37/38

Page 38: Argomento13 Gestione dei filecesposito/materiale/lezioni/Argomento13_Gesti… · Apertura/Chiusura di File –1/2 fid=fopen(percorso_del_file,modalita_apertura) ... aperto Sintassi

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

ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio3

GestionedeifileinMATLAB 38/38