Importazione di dati Nellambito dellutilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dallutilizzatore per analizzarli. load 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 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 save 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 nellambito 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 contatorei 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 dallutilizzatore (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 v 3. v(k)=mean(m(k,:))^2nel posto k-esimo la media della riga k-esima ^2 4. 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 = start while p <= stop; ……. comandi che contengono p …. p= p+step end; il codice precedente sarebbe 1. k=1;k va da 1 2. While k<= length(v)alla lunghezza di v 3. v(k)=mean(m(k,:))^2nel posto k-esimo la media della riga k-esima ^2 4. k=k+1k 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 allinterno 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 questaltro) break(termina il ciclo) end;