Gli M-file

Il Matlab consente di memorizzare una sequenza di istruzioni in un file; questo, per essere accessibile, deve avere l'estensione ".m"e pertanto si chiama M-file

Gli M-file possono essere di due tipi: script o function.

M-file tipo SCRIPT    (per brevita`: script)

Contengono semplicemente una sequenza di istruzioni Matlab, nella forma in cui si scriverebbero dalla linea attiva della finestra di Command. Utilizzano tutte le variabili gia` definite prima e, al termine dell'esecuzione, tutte le eventuali modifiche sono visibili all'esterno. In questo senso si dice che tutte le variabili sono GLOBALI. Accertatisi che la "Current Directory" di Matlab sia la stessa in cui e` memorizzato lo script, per eseguirlo e` sufficiente digitare, nella finestra di Command, il nome del file (senza l'estensione .m).

>> sommeprodotto   ¿

Oppure, in alternativa, soprattutto mentre si costruisce o corregge uno script all'interno del M-file Editor,  selezionare nel menu`: Debug e poi  Run.

M-file tipo FUNCTION    (per brevita`: function)

Definiscono una nuova funzione Matlab. Essi accettano dei dati in input e restituiscono dei dati di output come risultato della loro elaborazione.
La prima istruzione distingue la function e deve avere questa forma sintattica:

function[o1,o2,.....,on] = nome-funzione (i1,i2,.....,im)

dove o1,o2,.....on sono le variabili di output, nome-funzione e` il nome del file (senza l'estensione .m) e i1,i2,.....im sono le variabili di input.  Se la variabile di output e` una sola si possono omettere le parentesi quadre. Le linee successive contengono la sequenza di istruzioni necessarie a calcolare l'output a partire dall'input.

NOTE:

In testa ad uno script o ad una function,  possono essere scritte linee di commento, ad esempio sul significato delle variabili in ingresso e uscita della function stessa, precedute (come tutti i commenti in Matlab) dal simbolo  %. Questo e` molto utile perche` in qualunque momento successivo si possono richiamare,  nella finestra di Command, questi commenti semplicemente digitando il comando:

help nome-funzione.

(vedi l'esempio piu` avanti)

Per eseguire una function occorre digitare una chiamata nella stessa forma in cui e` scritta la prima istruzione :

[w1,w2,.....,wn] = nome-funzione (v1,v2,.....,vm)

dove questa volta v1,v2,.....,vm  contengono valori noti (anche sotto forma di variabili gia` definite), mentre w1,w2,.....,wm sono le variabili in cui vogliamo memorizzare i risultati, e non coincidono necessariamente con i nomi o1,o2,.....,on.    

Esempio. Se e` stata scritta la seguente function memorizzata nel file sumprod.m:

_______________________________________________________

%
%     function [s,p] = sumprod(x,y)
%
% calcola somma e prodotto di due numeri x e y
%
function [s,p] = sumprod(x,y)
s = x+y ;
p = x*y;

_______________________________________________________

digitando:
>> help sumprod

otteniamo:
     function [s,p] = sumprod(x,y)
calcola somma e prodotto di due numeri x e y

>>

Per utilizzare la function sumprod possiamo digitare:

>> [som,prodot] = sumprod(3,4)
som =
7
prodot =
12
>> whos
Name        Size        Bytes    Class

prodot      1x1             8    double array
som         1x1             8    double array

Grand total is 2 elements using 16 bytes

>>

Si notino i valori espliciti passati in input e il diverso nome delle variabili in output.

In alternativa, possiamo memorizzare il seguente script memorizzato nel file sommeprodotto.m:

%
% programma che calcola somma e prodotto di a e b dati in input,
% utilizzando la function [s,p] = sumprod(x,y)
%
a=input('1^ numero');
b=input('2^ numero');
[som,prodot]=sumprod(a,b);
disp('la somma e'''); disp(som)
disp('il prodotto e'''); disp(prodot)

che eseguiamo con:

>> sommeprodotto
1^ numero 5
2^ numero 6
la somma e'
11
il prodotto e'
30
>> whos
Name        Size        Bytes    Class

a           1x1             8    double array
b           1x1             8    double array
prodot      1x1             8    double array
som         1x1             8    double array

Grand total is 4 elements using 32 bytes

>>

Si notino le variabili in input contenenti valori definiti da tastiera.

 

- L    -     K    -     J    -