Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Funzioni
Slide basate sul corso di C. Blundo
>> d=-pi:0.1:pi;
>> f=@sin
>>
plot_fhandle(f,d)
Nota
Per passare una funzione come parametro
input della funzione plot_fhandle si deve
scrivere una funzione Matlab che
rappresenta la funzione da disegnare
function y=polinomio(x)
y=3*x.^2+3*x-4;
Altre caratteristiche delle
funzioni
La variabile nargin conserva il numero dei
parametri input della funzione
function
myplot(x,varargin)
plot(x,varargin{:})
myplot(sin(0:.1:1),'color',[.5 .7 .3],'linestyle',':')
Strutture di controllo
Matlab ha alcuni costrutti di
controllo di flusso
if … elseif … else … end
switch … case … otherwise … end
for … end
while … end
continue, break, return
if … elseif … else … end
Il costrutto if valuta un’espressione logica
ed esegue un gruppo di istruzioni quando
l’espressione è vera
I costrutti opzionali else ed elseif
permettono l’esecuzione di gruppi di
istruzioni alternative
La parola chiave end indica che l’ultimo
gruppo di istruzioni è terminato
Esempio – 1 function pariDispari(n)
if rem(n,2) == 0
end
Funzioni su matrici
Le seguenti funzioni sono utili quando si
usano matrici/vettori all’interno di una
condizione per l’if o elseif
isequal(A,B)
• Restituisce true se A e B sono identici
isempty(A)
• Restituisce true se A è vuto
all(A)
• Restituisce true se tutti gli elementi del vettore sono
diversi da zero
any(A)
• Restituisce true se almeno un elemento del vettore è
diverso da zero
Altre funzioni – 1
ischar(s)
Restituisce true se s è una stringa
isnumeric(n)
Restituisce true se n è un numero. Si può applicare anche ai
vettori
strcmp(s1, s2)
Restituisce true se s1 ed s2 sono uguali
Altre funzioni – 2
lower(s)
Converte i caratteri della stringa s in minuscolo
upper(s)
Converte i caratteri della stringa s in maiuscolo
num2str(n)
Converte il numero n in una stringa
int2str(i)
Converte l’intero i in una stringa (non considera le cifre dopo la
virgola)
switch … case … otherwise …
end
otherwise
istruzioni % Eseguite se espressione non
corrisponde
% a nessuno dei casi precedenti
end
Note
Il costrutto switch funziona confrontando
l’espressione input con ognuno dei valori
indicati nella clausola case
Per espressioni numeriche, una clausola
case è vera se
valore==espressione
Per espressioni di tipo stringa, una
clausola case è vera se
strcpm(valore,espressione) restituisce true
Esempio – 1
switch numero >> verifica(0)
case -1 zero
disp('negativo');
case 0 >> verifica(1)
disp('zero'); positivo
case 1
disp('positivo'); >> verifica(-1)
otherwise negativo
disp('non è –1, 0 o 1');
end >> verifica(12)
non è 1, 0 o 1
Esempio – 2
function mesi(s)
switch s
case 'gennaio'
>> mesi('e')
disp('gennaio ha 31 giorni')
case 'febbraio' Non hai immesso un mese
disp('febbraio ha 28 o 29 giorni') >> mesi('febbraio')
case 'marzo'
febbraio ha 28 o 29 giorni
disp('marzo ha 31 giorni')
otherwise >> mesi('marzo')
disp('Non hai immesso un mese') marzo ha 31 giorni
end
Nota
Il costrutto switch può gestire condizioni multiple
in una singola clausola case racchiudendo i valori
della clausola case in un array cella
switch var
case 1
disp('1')
case {2,3,4}
disp('2 o 3 o 4')
case 5
disp('5')
otherwise
disp('Altro numero')
end
Nota sulle stringhe
Le stringhe sono rappresentate in
Matlab da una serie di caratteri
racchiusi tra apici
Matlab vede una stringa come un
vettore
Possiamo accedere all’i-esimo carattere
della stringa s scrivendo s(i)
Per estrarre delle sottostringhe possiamo
usare opportunamente l’operatore :