introduzione a matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · lucio...

23
1 Lucio Zambon ® Introduzione a Matlab Funzioni Una funzione è una sequenza di istruzioni identificata con un nome. Le funzioni sono salvate in un file .m (m-file) I file .m devono stare in una cartella nota a Matlab tramite la variabile d'ambiente PATH Per aggiungere una cartella a PATH si usa il comando omonimo PATH, ad esempio: path(path,'c:\tools\goodstuff')

Upload: phammien

Post on 10-Sep-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

1Lucio Zambon

®Introduzione a MatlabFunzioniUna funzione è una sequenza di istruzioni identificata con un nome.Le funzioni sono salvate in un file .m (m-file)I file .m devono stare in una cartella nota a Matlab tramite la variabile d'ambiente PATHPer aggiungere una cartella a PATH si usa il comando omonimo PATH, ad esempio:path(path,'c:\tools\goodstuff')

2Lucio Zambon

®Introduzione a Matlab

Funzioni: parametri di I/OUna funzione può avere uno o più parametri in ingresso e può restituire uno o più parametri in uscitafunction [out1, out2...] = fun_name(in1, in2...)in1, in2... = parametri in ingresso (opzionali)out1, out2... = parametri in uscita (opzionali)

3Lucio Zambon

®Introduzione a MatlabFunzioni: parametri di I/O variabilinargin, nargout numero parametri d'ingresso/uscita con cui è stata chiamata la funzione correntevarargin, varargout permette di avere un numero arbitrario di parametri d'ingresso/uscita Le variabili definite dentro una funzione sono locali ad essa, non sono utilizzabili altrove. global permette di utilizzare variabili globali

4Lucio Zambon

®Introduzione a Matlab

Esempio di funzione (1)% MYSQUARE calcola il quadrato di un numero% mysquare(x), x numero da elevare al quadratofunction risultato = mysquare(x)‏ risultato = x^2;% a destra del percento ci sono i commenti% che vengono ignorati dall'interprete% i commenti delle prime righe vengono mostrati% da help mysquare

5Lucio Zambon

®Introduzione a Matlab

Esempio di funzione (2)Funzione che restituisce 2 variabili in uscita: lamedia e la deviazione standard function [mean,stdev] = stat(x) %STAT Interesting statistics. n = length(x); mean = sum(x) / n; stdev = sqrt(sum((x - mean).^2)/n);

6Lucio Zambon

®Introduzione a Matlab

Espressioni condizionali: IFIF espressione

istruzioniELSEIF espressione

istruzioniELSE

istruzioniEND

7Lucio Zambon

®Introduzione a Matlab

Esempio di istruzione IFif a ~= 0 % ~= diverso, == test ugualianza

b = 1/aelse

b = NaN % Not-a-Numberend

8Lucio Zambon

®Introduzione a MatlabEspressioni condizionali: SWITCHSWITCH switch_espr

CASE case_espr, istruzione, ..., istruzione

CASE {case_espr1, case_espr2,...}istruzione, ..., istruzione

OTHERWISE, istruzione, ..., istruzione

END

9Lucio Zambon

®Introduzione a MatlabEsempio di istruzione SWITCHMETHOD = 'Bilinear';switch lower(METHOD)‏

case {'linear','bilinear'}disp('Il metodo è lineare')‏

case 'cubic'disp('Il metodo è cubico')‏

otherwisedisp('Metodo sconosciuto.')‏

end

10Lucio Zambon

®Introduzione a Matlab

IterazioniUn blocco di istruzioni può essere ripetuto un numero arbitrario di volte mediante le istruzioni chiamate ciclo FOR e ciclo WHILE.I cicli possono essere annidati uno nell'altro. Attenzione ai cicli infiniti!

11Lucio Zambon

®Introduzione a Matlab

Ciclo FORFOR variabile = espressione

istruzione, ..., istruzione

END

12Lucio Zambon

®Introduzione a Matlab

Esempio ciclo FORi = 1for x = [-5:0.1:5]

y(i) = x^2i = i + 1

end

13Lucio Zambon

®Introduzione a Matlab

Ciclo WHILEWHILE espressione istruzioniEND

14Lucio Zambon

®Introduzione a Matlab

Esempio ciclo WHILEdividendo = 4567divisore = 37quoziente = 0resto = dividendowhile resto > divisore

resto = resto - divisorequoziente = quoziente + 1

end

15Lucio Zambon

®Introduzione a Matlab

BREAKInterrompe ed esce da un ciclo for o while.Nel caso di cicli annidati esce solo da quello più interno in cui è contenuto.Se non è contenuto in un ciclo for o while esce dalla funzione in cui è contenuto.Interrompe l'esecuzioni di istruzioni if e switch.

16Lucio Zambon

®Introduzione a Matlab

Esempio BREAKi = 1for x = [-5:0.1:5]

if x == 0, i, break, endy(i) = 1/x;i = i + 1;

end

17Lucio Zambon

®Introduzione a Matlab

CONTINUEInterrompe un'iterazione di un ciclo for o while e riprende dall'iterazione successiva.Nel caso di cicli annidati interrompe solo quello più interno in cui è contenuto.

18Lucio Zambon

®Introduzione a MatlabEsempio CONTINUEi = 0;for x = [-5:0.1:5]

i = i + 1;if x == 0

y(i) = NaN;continue

endy(i) = 1/x;

end

19Lucio Zambon

®Introduzione a MatlabRETURNInterrompe l'esecuzione di una funzioneEsempio:function d = det(A)‏

if isempty(A)‏d = 1;return

else...

end

20Lucio Zambon

®Introduzione a MatlabAltri comandi utilitic toc serve a rilevare il tempo di esecuzione di una frazione di codice profile analizza il tempo di esecuzione di tutte le funzioni utilizzatepause sospende l'esecuzione in attesa che l'utente prema un tastoclc cancella la command window

21Lucio Zambon

®Introduzione a MatlabRicorsioneUna funzione può richiedere al suo interno l'esecuzione di altre funzioni, ma anche di se stessa. L'invocazione ricorsiva di una funzione deve essere contenuta in una condizione d'uscita pena l'iterazione infinita. Esempio: function y = fatt(x)

y = 1; if x>0

y = x * fatt(x-1);end

22Lucio Zambon

®Introduzione a MatlabEsempio: calcolo di numeri primi (1)

23Lucio Zambon

®Introduzione a MatlabEsempio: calcolo di numeri primi (2)