M-Files e Funzioni

Precedente Home Su Successiva

I DUE MODI PER RAGGRUPPARE I COMANDI

A seconda che si voglia utilizzare una serie di comandi per svolgere un compito del tutto particolare o si voglia realizzare una funzionalità di utilizzazione ricorrente per il progetto da realizzare si dovranno utilizzare degli M-file o delle funzioni.

Un m-file è un semplice file di testo con l’estensione file.m ed è realizzabile ad esempio con l’uso del Notepad od un qualsiasi editor di testo. Deve essere contenuta in una delle directory riconosciute dal MATLAB e non contiene altre specifiche per l’uso se non la correttezza delle dichiarazioni contenute. Un esempio di m-file è una sequenza di istruzioni qualsiasi che fa uso delle variabili già presenti nel MATLAB o ne dichiara di nuove (che rimarranno valide anche dopo il termine dell’esecuzione dell’m-file) come quello riportato qui di seguito :

v = [10 13.1 13 5 56 19];
vmin = min(v);
vmax = max(v);
vres = (vmax - vmin)/(vmax + vmin);

dove:

v è un vettore 1x6 dichiarato esplicitamente;

min e max sono funzioni del matlab che permettono di estrarre il minimo e il massimo di un vettore;

vmin e vmax sono variabili dichiarate implicitamente, il cui valore è definito dal risultato delle  operazioni min e max;

vres è una variabile dichiarata implicitamente come risultato dell'ultima operazione descritta; 

E' da notare che ogni variabile dichiarata in un m-file che viene eseguito, risulta poi presente nello spazio delle variabili del Matlab. Questo spazio viene chiamato workspace e il suo contenuto può essere esplorato sia dalla finestra del Matlab (menu: View->Workspace), sia può essere esplorato con il comando who (lista delle variabili) o whos (lista dettagliata delle variabili). 

Al contrario degli m-file, le funzioni sono solitamente utilizzate per raggruppare una sequenza di operazioni (procedura) che più volte viene richiamata all’interno di un progetto per eseguire un’elaborazione di uno o più dati e in cui le variabili utilizzate durante questa elaborazione non sono di interesse del progettista. Infatti le variabili dichiarate all’interno di una funzione sono locali e note solo all’interno della funzione. Oltretutto, le variabili non locali conservate nell’attuale sessione del MATLAB non sono raggiungibili se non passate come argomento della funzione. Un esempio di funzione MATLAB può essere quello che calcola l'energia di un satellite a partire dal raggio e dalla velocità di un satellite, riportato nella figura che segue :

function [U, T, E] = satEnergy(r, v)

mu = 3.98e14;

U = -mu/(2*r);
T = v^2 / 2;
E = V + T;

end

dove: 

function [U, T, E] = satEnergy(r, v) è la dichiarazione di funzione in cui:
U, T ed E sono gli argomenti di uscita della funzione;
r e v sono gli argomenti di ingresso;
satEnergy è il nome della funzione, e con lo stesso nome sarà anche chiamato il file che conterrà la funzione;
Nel corpo della funzione mu è una variabile locale; Il contenuto di questa variabile andrà perso all'uscita della funzione;
U, T ed E sono variabili di uscita, e il contenuto di queste variabili vengono trasmesse al codice chiamante;
end è il terminatore del corpo della funzione;

Una funzione, come un M-file è un semplice file di testo che può essere modificato con l’uso di un normale editor di testo. Si differenzia dal punto di vista della sintassi per la dichiarazione di funzione function ad inizio file e del punto di vista computazionale, per l’invisibilità delle variabili locali ivi dichiarate.

ALCUNE INFORMAZIONI UTILI

Qui di seguito, una lista di informazioni utili per la manipolazione delle funzioni:

edit nomefile è il comando che permette di aprire nel matlab editor il contenuto di una funzione o di un mfile il cui nome con il quale è stato salvato è nomefile.m
Invocando il nome di un m-file o di una funzione, il matlab richiama quella che vede per prima nelle cartelle che matlab ha memorizzate come percorsi in cui cercare i file. Questo percorso (path) può essere visualizzato tramite il menu (File->Set Path) o tramite il comando matlabpath.
Essendo possibile l'eventualità della presenza di più file con lo stesso nome nel percorso di ricerca, è possibile sapere quale file sarà utilizzato dal Matlab tramite il comando which nomefile.  

Pagina aggiornata il 28/05/06

Leonardo Daga's Warehouseâ, http://leonardodaga.insyde.it
Send any Comments to: leonardo.daga@gmail.com