Post on 30-Jul-2020
transcript
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
OUTLINE
•Caratteristiche dei File
•Apertura/Chiusura di File
•Scrittura/Lettura da File
• Importare Dati da File
GestionedeifileinMATLAB 02/38
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
>> uiimport('data.txt')
ImportareDatidaFileTramiteInterfacciaGrafica
GestionedeifileinMATLAB 27/38
>> uiimport('data.txt')
ImportareDatidaFileTramiteInterfacciaGrafica
‘data.txt’ èilpercorsodelfile
GestionedeifileinMATLAB 28/38
>> uiimport('data.txt')
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 29/38
>> uiimport('data.txt')
Selezionedelseparatoredicolonne
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 30/38
>> uiimport('data.txt')
Numerodilineedell’intestazione
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 31/38
>> uiimport('data.txt')
Anteprimadelcontenutodelfile
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 32/38
>> uiimport('data.txt')
Anteprimadiciòcheverràimportato
(data)
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 33/38
>> uiimport('data.txt')
Anteprimadiciòcheverràimportato
(textdata)
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio1
GestionedeifileinMATLAB 34/38
>> uiimport('data.txt')
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2
GestionedeifileinMATLAB 35/38
>> uiimport('data.txt')
Selezioniamocosaimportareall’internodelnostroworkspace
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2
GestionedeifileinMATLAB 36/38
>> uiimport('data.txt')
Anteprimadellavariabileselezionata
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio2
GestionedeifileinMATLAB 37/38
◦ Cliccando su Finish, nel nostro Workspace diMATLAB, saranno importate le variabiliselezionate ed avranno i valori vistinell’anteprima
ImportareDatidaFileTramiteInterfacciaGrafica|Passaggio3
GestionedeifileinMATLAB 38/38