Top Banner
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')
23

Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

Sep 10, 2018

Download

Documents

phammien
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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')

Page 2: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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)

Page 3: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 4: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 5: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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);

Page 6: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

6Lucio Zambon

®Introduzione a Matlab

Espressioni condizionali: IFIF espressione

istruzioniELSEIF espressione

istruzioniELSE

istruzioniEND

Page 7: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

7Lucio Zambon

®Introduzione a Matlab

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

b = 1/aelse

b = NaN % Not-a-Numberend

Page 8: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 9: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 10: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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!

Page 11: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

11Lucio Zambon

®Introduzione a Matlab

Ciclo FORFOR variabile = espressione

istruzione, ..., istruzione

END

Page 12: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

12Lucio Zambon

®Introduzione a Matlab

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

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

end

Page 13: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

13Lucio Zambon

®Introduzione a Matlab

Ciclo WHILEWHILE espressione istruzioniEND

Page 14: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

14Lucio Zambon

®Introduzione a Matlab

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

resto = resto - divisorequoziente = quoziente + 1

end

Page 15: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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.

Page 16: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 17: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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.

Page 18: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 19: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

19Lucio Zambon

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

if isempty(A)‏d = 1;return

else...

end

Page 20: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 21: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

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

Page 22: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

22Lucio Zambon

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

Page 23: Introduzione a Matlabluciozambon.altervista.org/home/students/matlab_3_function_2008.pdf · Lucio Zambon 3 Introduzione a Matlab® Funzioni: parametri di I/O variabili nargin, nargout

23Lucio Zambon

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