90 likes | 234 Views
Importazione di dati. Nell’ambito dell’utilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dall’utilizzatore per analizzarli.
E N D
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 load, utilizzandolo nel modo seguente:load + percorso del filee 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 save 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 contatore è i e il suo nome non è fisso, è determinato dall’utilizzatore (poteva essere a,b,c,d…). Quando il programma gira succede questo: • i parte dal valore start, viene immesso nei comandi in cui i compare, poi i viene incrementato dello step e così via • 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: • v=zeros(size(m,1),1) • for k=1:length(v); k va da 1 alla lunghezza di v • v(k)=mean(m(k,:))^2 nel posto k-esimo la media della riga k-esima ^2 • 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 • k=1; k va da 1 • While k<= length(v) alla lunghezza di v • v(k)=mean(m(k,:))^2 nel posto k-esimo la media della riga k-esima ^2 • k=k+1 k lo aumento di 1 alla volta • 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;