• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
38
0
0

Testo completo

(1)

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

(2)

OUTLINE

• Caratteristiche dei File

• Apertura/Chiusura di File

• Scrittura/Lettura da File

• Importare Dati da File

(3)

Caratteristiche dei File

I file possono essere visti come dei contenitori permanenti di informazioni

• Il Sistema Operativo si occupa della loro gestione ed offre la possibilità, agli sviluppatori, di:

• Apertura/chiusura di un file

• Lettura/scrittura di un file

• Ecc.

(4)

Apertura/Chiusura di File – 1/2

fid = fopen(percorso_del_file, modalita_apertura)

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

• La modalità di apertura (modalita_apertura) può essere:

Scrittura (modalita_apertura = ‘w’)

Lettura (modalita_apertura= ‘r’)

Scrittura e lettura (modalita_apertura= ‘w+’ e modalita_apertura = ‘r+’)

Append (modalita_apertura= ‘a ’): apre un file esistente o crea un nuovo file in scrittura con posizionamento alla fine del file.

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

Sintassi

(5)

Apertura/Chiusura di File – 2/2

fclose(fid)

• Chiude il file identificato da fid

Esempio utilizzo fopen e fclose

Sintassi

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

>> fclose(fid);

(6)

Apertura/Chiusura di File – 2/2

fclose(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’)

(7)

Scrittura di un File (1/2)

Alcune funzioni per la scrittura su file

• Il file deve essere precedentemente aperto mediante la fopen

fwrite

• Scrive un array, passato come parametro, su un file specificato

• help fwrite per maggiori dettagli

fprintf

• Scrive su file, secondo un formato specificato dall’utente

• help fpritnf per maggiori dettagli

(8)

Scrittura di un File (2/2)

• cont = fwrite(fid, array, formato)

• cont: indica il numero di valori effettivamente scritti nel file

• fid: identificatore del file su cui scrivere (nb: il file deve essere stato aperto in precedenza)

• array: array contenente i dati da salvare

• formato: specifica il formato in cui i dati verranno salvati. Formati principali:

• char, int8, int16, int32, int64, float32, float64 (i numeri

indicano il numero di bit usati per rappresentare i

valori)

(9)

Lettura da File (1/2)

Alcune funzioni per la lettura da file

• Il file deve essere precedentemente aperto mediante la fopen

fread

• Legge un array, di lunghezza specificata, da un file indicato tramite parametro

• help fread per maggiori dettagli

fscanf

• Legge da file, specificando esplicitamente il formato di tali

• dati help fscanf per maggiori dettagli

(10)

Lettura da File (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 è la dimensione dei dati da leggere. Tre possibilità

• n: legge esattamente n valori. Dopo l’esecuzione di questa istruzione array sarà un vettore colonna contenente questi n valori

• Inf: legge fino alla fine del file. Dopo l’esecuzione di questa istruzione array sarà un vettore colonna contenente tutti i valori letti

• [n m]: legge esattamente nxm valori. Dopo

l’esecuzione di questa istruzione array sarà una

matrice nxm contenente tutti i valori letti

(11)

Esempio di

Scrittura e Lettura da File (1/2)

% genera un vettore riga contenente numeri casuali a=rand(1,1000);

%richiede all'utente il nome del file

filename=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 scrittura disp([num2str(cont) ' valori scritti...']);

fclose(fid); %chiude il file else

disp(msg);

end

(12)

Esempio di

Scrittura e Lettura da File (2/2)

% genera un vettore riga contenente numeri casuali a=rand(1,1000);

%richiede all'utente il nome del file

filename=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 lettura disp([num2str(cont) ' valori letti...']);

fclose(fid); %chiude il file else

disp(msg);

end

(13)

Importare Dati da File – 1/4

• Con la funzione importdata è possibile di importare dati da diversi tipi di file:

• Testuali

• CSV

• Ecc.

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

• help importdata per maggiori dettagli

(14)

Importare Dati da File – 2/4

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

A =

1 4 6 4 2 5 6 5 4

1, 4, 6 4, 2, 5

6, 5, 4

matrice.txt

Esempio 1

(15)

Importare Dati da File – 2/4

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

A =

1 4 6 4 2 5 6 5 4

1, 4, 6 4, 2, 5

6, 5, 4

matrice.txt

La virgola (simbolo ,) è

interpretata come separatore di colonne

Esempio 1

(16)

Importare Dati da File – 3/4

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

A =

1 4 6 4 2 5 6 5 4

1 4 6 4 2 5

6 5 4

matrice.txt

Esempio 2

(17)

Importare Dati da File – 3/4

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

A =

1 4 6 4 2 5 6 5 4

1 4 6 4 2 5

6 5 4

matrice.txt

È possibile specificare anche un delimitatore di colonne in importdata

(spazio nell’esempio)

Esempio 2

(18)

Importare Dati da File – 4/4

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

(19)

Importare Dati da File – 4/4

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

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

(20)

Importare Dati da File – 4/4

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

Nome del 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

(21)

Importare Dati da File – 4/4

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

vs.txt

Esempio 3

(22)

Importare Dati da File – 4/4

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

vs.txt

Tutti i dati numerici vengono immagazzinati in data

Esempio 3

(23)

Importare Dati da File – 4/4

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

vs.txt

textdata conterrà tutti i dati testuali (es., intestazione

delle righe e colonne)

Esempio 3

(24)

Importare Dati da File – 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' '' '' '' '' ''

Esempio 3

(25)

Importare Dati da File – 4/4

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

file =

data: [4x5 double]

textdata: {5x6 cell}

>> A = file.data A =

28 25 30 23 19 24 27 28 21 24 25 25 19 18 22 21 30 30 22 30

Esempio 3

(26)

Importare Dati da File

Tramite Interfaccia Grafica

• Tramite uiimport è possibile selezionare, tramite interfaccia grafica, diverse opzioni per l’import di dati:

• Tipo di separatore di colonna

• Quante righe/colonne occupa l’intestazione

• Ecc.

• Non è necessario che il file sia stato aperto

precedentemente (tramite fopen)

(27)

>> uiimport('data.txt')

Importare Dati da File

Tramite Interfaccia Grafica

(28)

>> uiimport('data.txt')

Importare Dati da File

Tramite Interfaccia Grafica

‘data.txt’ è il percorso del file

(29)

>> uiimport('data.txt')

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(30)

>> uiimport('data.txt')

Selezione del separatore di colonne

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(31)

>> uiimport('data.txt')

Numero di linee dell’intestazione

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(32)

>> uiimport('data.txt')

Anteprima del contenuto del file

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(33)

>> uiimport('data.txt')

Anteprima di ciò che verrà importato

(data)

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(34)

>> uiimport('data.txt')

Anteprima di ciò che verrà importato

(textdata)

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 1

(35)

>> uiimport('data.txt')

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 2

(36)

>> uiimport('data.txt')

Selezioniamo cosa importare all’interno del nostro workspace

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 2

(37)

>> uiimport('data.txt')

Anteprima della variabile selezionata

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 2

(38)

Cliccando su Finish, nel nostro Workspace di MATLAB, saranno importate le variabili selezionate ed avranno i valori visti nell’anteprima

Importare Dati da File

Tramite Interfaccia Grafica | Passaggio 3

Riferimenti

Documenti correlati

Farà parte di questo modulo un foglio, detto Customer Satisfaction Item List, dove devono essere elencate le caratteristiche che il prodotto dovrà possedere per assicurare una

La presentazione della tesi di un laureando davanti ad una commissione di laurea pu`o essere descritta tramite il nome e la matricola del laureando, il titolo della tesi, il nome

La sessione di una conferenza pu`o essere caratterizzata dal nome della con- ferenza, dal numero di sessione, dal nome del coordinatore della sessione e dall’elenco delle

 Evitare l'uso di array paralleli trasformandoli in array Evitare l'uso di array paralleli trasformandoli in array di oggetti:.

I quattro campi di testo devono essere inizializzati con le prime quattro stringhe contenute nell’array del file “prova.dat” (se non vengono sovrascritte dall’utente devono

Il file deve contenere almeno 6 righe, ogni studente può avere un numero di voti diverso.. Scrivere un

• tutte le variabili di un array hanno lo stesso tipo di dato (il tipo dell tipo dell ’array ’ array), e si chiamano anche..

• Un costruttore che consente di definire una nuova TabellaVoti; il costruttore deve prendere in ingresso un array di stringhe che definisce la sequenza dei nomi degli studenti,