Importazione di dati
description
Transcript of Importazione di dati
Importazione di dati
Nell’ambito dell’utilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dall’utilizzatore per analizzarli.
Se i dati sono contenuti in un file .txt separati da spazi vuoti è possibile caricarli in MATLAB attraverso il comando loadload, utilizzandolo nel modo seguente:
load + percorso del file
e la matrice di dati viene salvata in MATLAB con il nome del file. È poi possibile ridenominarla come una qualsiasi matrice.
Importazione di dati
Se i dati sono contenuti in un file .m salvato nella directory work di MATLAB basta semplicemente digitarne il nome sul command di MATLAB che automaticamente lo leggerà
Possiamo quindi creare una matrice di dati in un file .m, salvarlo nella directory work affinché questa matrice venga per sempre associata da MATLAB alla variabile.
Esportazione di dati
Il comando savesave salva i dati in un file con estensione .mat nella directory work utilizzandolo nel modo seguente:
save + nome del file + nome della variabile da salvare
Tale variabile può essere ripresa con il comando load oppure riaprendo il file dalla cartella work.
È possibile in alternativa aprire un file, scrivergli sopra e poi richiuderlo con una serie di comandi. Poniamo di voler porre la nostra matrice P di 2 colonne in un file di percorso c:\outp.txt:
Esportazione di dati
nomeint = fopen(‘file.txt’, ‘wt’)dove nomeint è un nome interno che diamo noi (quindi poteva esserci scritto al suo posto qualsiasi altra cosa), fopen è il comando di MATLAB e ‘wt’ sta per to write, perché apriamo il file per scrivergli sopra;
fprintf(nomeint, ‘%g %g’, P)dove ogni %g fa salvare la colonna di P, P è la nostra matrice
fclose(nomeint)per chiudere il file aperto con nome interno nomeint.
Cicli
Molto spesso abbiamo bisogno nell’ambito della programmazione di cicli basati su contatori; si tratta di meccanismi che permettono di indicizzare alcune variabili in modo da creare operazioni per un numero determinato di volte.
Ad esempio, poniamo di avere una matrice e di voler calcolare la media di ogni riga, elevarle alla seconda e porle in un vettore. Ci serve un modo per selezionare la prima riga, calcolare la media, elevarla al quadrato e porre il risultato nel primo elemento del vettore; selezionare la seconda riga, calcolare la media, elevarla al quadrato e porre il risultato nel secondo elemento del vettore, etc. Vediamo come fare.
Cicli: for
Il ciclo con il for sfrutta la seguente sintassi:
for i = start:step:stop;……. comandi che contengono i ….end;
Il contatorecontatore è ii e il suo nome non è fisso, è determinato dall’utilizzatore (poteva essere a,b,c,d…). Quando il programma gira succede questo:
1. i parte dal valore start, viene immesso nei comandi in cui i compare, poi i viene incrementato dello step e così via
2. quando si arriva al valore stop il programma si ferma ed esce dal ciclo
Cicli: for
Vediamo in concreto il meccanismo scrivendo il codice di prima. Prima di tutto creiamo un vettore di zeri con tante righe quante quelle della matrice (m) che accoglierà i quadrati delle medie per riga. Poi scriviamo il ciclo:
1. v=zeros(size(m,1),1)2. for k=1:length(v); k va da 1 alla lunghezza di v3. v(k)=mean(m(k,:))^2 nel posto k-esimo la media
della riga k-esima ^24. end;
Quando il loop gira k vale 1, viene immesso nel comando che calcola la media della riga k della matrice, la eleva alla seconda e la pone nel posto k del vettore, poi k viene aumentato di 1 e così via fino a finire le righe.
Cicli: while
Il ciclo con il while usa la seguente sintassi:
p = startwhile p <= stop;……. comandi che contengono p ….p= p+stepend;
il codice precedente sarebbe
1. k=1; k va da 12. While k<= length(v) alla lunghezza di v3. v(k)=mean(m(k,:))^2 nel posto k-esimo la
media della riga k-esima ^2
4. k=k+1 k lo aumento di 1 alla volta
5. End;
Cicli
I cicli for sono generalmente più efficienti dei cicli while, in termini di velocità di calcolo.
Entrambi i tipi di cicli (for e while) possono essere bloccati all’interno con il comando break. Questo comando risulta particolarmente utile utilizzandolo con if (v. dopo). La struttura del ciclo sarebbe del tipo:
for / while
if … (se succede questo)….. (continua il loop e calcola questo)elseif … (se invece succede quest’altro)break (termina il ciclo)
end;