Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
FondamentidiInformaticaIntroduz ionea l la programmazione in MATLAB: Parte 1 (M-F i le e Input/Output)
Prof. Chr i st ian Espos i to
Corso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )
A .A . 2017/18
IntroduzioneallaprogrammazioneinMATLAB:Parte1
IntroduzioneallaprogrammazioneinMATLAB:Parte1
OUTLINE
•M-File•M-FileScript•M-FileFunction
• Input/Output
IntroduzioneallaprogrammazioneinMATLAB:Parte1 02/88
M-File– 1/2
• Finora abbiamo inserito comandi, istruzioni e funzioniMATLAB direttamente mediante la Command Window• Tuttavia, ciò può causare disagio, specialmente quando comandi,istruzioni e funzioni devono essere rieseguiti più volte• Magari in più sessioni di lavoro MATLAB distinte• Con leggere modifiche• Etc
IntroduzioneallaprogrammazioneinMATLAB:Parte1 03/88
M-File– 1/2
• Finora abbiamo inserito comandi, istruzioni e funzioniMATLAB direttamente mediante la Command Window• Tuttavia, ciò può causare disagio, specialmente quando comandi,istruzioni e funzioni devono essere rieseguiti più volte• Magari in più sessioni di lavoro MATLAB distinte• Con leggere modifiche• Etc•MATLAB permette di risolvere questi problemiattraverso l’utilizzo degliM-File
IntroduzioneallaprogrammazioneinMATLAB:Parte1 04/88
M-File– 2/2
•MATLAB consente di memorizzare una sequenza diistruzioni in un file, dettoM-File• In particolare, unM-File può essere di due tipi• M-File Script: contiene una sequenza di comandi o istruzioniMATLAB, nella stessa forma in cui vengono scritti usando CommandWindow• M-File Function: contiene nuove funzioni MATLAB definitedall’utente. In generale, tali funzioni accettano dati in input erestituiscono dati di output, come risultato della loro elaborazione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 05/88
M-FileScript– 1/9• In MATLAB è possibile rieseguire comandi, istruzioni e funzionimediante i seguenti passi• Creare un file (che conterrà la lista di comandi, istruzioni e funzioni)• Salvare il file• Eseguire il file
• Un file contenente una lista di comandi/istruzioni/funzioni MATLABviene detto• M-File Script
• OgniM-file Script ha l’estensione .m
IntroduzioneallaprogrammazioneinMATLAB:Parte1 06/88
M-FileScript– 2/9• Piùprecisamente,unM-file Script è• UnfileesternocontenentesequenzediistruzioniMATLAB• Digitandoilnomedelfile,comandi/istruzioni/funzionipreseininputdaMATLABsonoottenutedirettamentedatalefile
• Utileperl'automazionediblocchidicomandi/istruzioni/funzioniMATLAB• Comeadesempiocalcolicheènecessarioeseguirepiùvolte(manualmente)dallaCommand Window
IntroduzioneallaprogrammazioneinMATLAB:Parte1 07/88
M-FileScript– 3/9• Esempio• Creare uno script (di nome sommamat.m) che• Effettua la somma di due matrici A e B• Salva il risultato nella matrice C ed infine lo stampa
• A e B sono definite come segue• 𝐴 = 2 34 5 , 𝐵 =
6 78 9
• SOLUZIONEMATLAB per sommare A e B• Tale soluzione andrà inserita nel file sommamat.m
A=[2 3;4 5];B=[6 7; 8 9];C=A+B
IntroduzioneallaprogrammazioneinMATLAB:Parte1 08/88
M-FileScript– 4/9• Creare uno script con MATLAB
IntroduzioneallaprogrammazioneinMATLAB:Parte1 09/88
M-FileScript– 4/9(VersionipiùrecentidiMATLAB)• Creare uno script con MATLAB
IntroduzioneallaprogrammazioneinMATLAB:Parte1 10/88
M-FileScript– 4/9(VersionipiùrecentidiMATLAB)• Creare uno script con MATLAB
IntroduzioneallaprogrammazioneinMATLAB:Parte1 11/88
M-FileScript– 4/9(UtilizzandolaCommandWindow)• Creare uno script con MATLAB utilizzando il comando edit
IntroduzioneallaprogrammazioneinMATLAB:Parte1 12/88
M-FileScript– 5/9• Editor diM-File Script• Inserire le istruzioni MATLAB mediante l’Editor diM-file Script
IntroduzioneallaprogrammazioneinMATLAB:Parte1 13/88
M-FileScript– 6/9• Salvare l’M-File Script (il .m viene automaticamente aggiunto)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 14/88
M-FileScript– 6/9(VersionipiùrecentidiMATLAB)• Salvare l’M-File Script (il .m viene automaticamente aggiunto)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 15/88
M-FileScript– 6/9(VersionipiùrecentidiMATLAB)• Salvare l’M-File Script (il .m viene automaticamente aggiunto)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 16/88
M-FileScript– 6/9• Salvare l’M-File Script (il .m viene automaticamente aggiunto)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 17/88
M-FileScript– 7/9• Eseguire l’M-File Scriptmediante la Command Window• L’M-File Script deve essere memorizzato nella Current Directory• Per eseguirlo è sufficiente digitare nella Command Window il nome del filescript (senza estensione .m)
• Esempio• Supponiamo di aver memorizzato il file script dell’esempio precedentenella Current Directory, con il nome di sommamat.m
>> sommamat
C =
8 1012 14
IntroduzioneallaprogrammazioneinMATLAB:Parte1 18/88
• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli
Scriptpercalcolarelamediadi3numeri
Workspace
M-FileScript– 8/9
IntroduzioneallaprogrammazioneinMATLAB:Parte1 19/88
Scriptpercalcolarelamediadi3numeri
VariabilipresentinelWorkspace primadell’esecuzionedelloscript
Command Window
M-FileScript– 8/9• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Definiscotrevariabilia, b, c
20/88
• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli
Scriptpercalcolarelamediadi3numeri
Command Window
VariabileinseritanelWorkspace dopol’esecuzionedello
script
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Eseguoloscriptchiamatomedia
21/88
• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli
M-FileScript– 8/9
Scriptpercalcolarelamediadi3numeri
Workspace
IntroduzioneallaprogrammazioneinMATLAB:Parte1 22/88
• GliM-FileScript possonooperaresuvariabiliesistentinelWorkspace,oppurepossonocrearnedinuove• TuttelevariabilichechevengonocreatedataliscriptrimangononelWorkspace epossonoessereusatepereffettuareulterioricalcoli
M-FileScript– 8/9
Scriptpercalcolarelamediadi3numeri
IntroduzioneallaprogrammazioneinMATLAB:Parte1
VariabiliinseritenelWorkspace dopol’esecuzionedello
scriptEseguoloscriptchiamatomedia
23/88
M-FileScript– 9/9•M-File Script• VANTAGGI:• È possibile modificare (se necessario) comandi/istruzioni/funzioninel file una sola volta, ed eseguire tale file (script) più volte
• SVANTAGGI:• Tutte le variabili create all’interno dello script sono aggiunte alWorkspace, e questo può portare a problemi indesiderati• Ad Esempio• Alcune variabili già esistenti nel Workspace vengono sovrascritte• Lo stato di alcune variabili già esistenti nel Workspace viene modificato• Etc
IntroduzioneallaprogrammazioneinMATLAB:Parte1 24/88
CommentiinMATLAB– 1/3• GliM-FileScript (maanchegliM-FileFunction)possonocontenerequalsiasiseriediistruzioni/comandi/funzioniMATLAB,maanchecommenti• Qualsiasitestochesegueunsegnodipercentuale(%)suunadatalineaèdettotestodicommento• Icommenti• Possonoapparire• SulineedistinterispettoalleistruzioniMATLAB• AllafinediunaistruzioneMATLAB• NonvengonoprocessatidaMATLAB• L’aggiuntadicommentièessenzialeperlacomprensionediprogrammicostituitidaungrannumerodiistruzioni• Amaggiorragioneseilprogrammadeveesserecompresodapersonediversedalsuoautore
IntroduzioneallaprogrammazioneinMATLAB:Parte1 25/88
26/88
Commentosulineadistinta
CommentiinMATLAB– 2/3
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Commentosulineadistinta
27/88
Commentoafineistruzione
CommentiinMATLAB– 3/3
IntroduzioneallaprogrammazioneinMATLAB:Parte1 28/88
Funzioni– 1/4• Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico
• In termini più formali, una funzione (detta anche subroutine,metodo, procedura o sottoprogramma) è una porzione dicodice all'interno di un programma più ampio, che svolge uncompito specifico e può essere relativamente indipendente dalresto del codice
• Le funzioni rappresentano le basi per costruire programmi piùcomplessi
IntroduzioneallaprogrammazioneinMATLAB:Parte1 29/88
80 90 95 100 98 88 92x =
Input
Funzioni
y = mean(x) y = sum(x)
Output
91.85 643 100
y = max(x)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 30/88
Funzioni– 2/4
• Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico
Output Input
Function
IntroduzioneallaprogrammazioneinMATLAB:Parte1 31/88
Funzioni– 2/4
• Una funzione è un segmento (blocco) autonomo diprogramma che esegue un compito specifico
• Una funzione può• Accettare uno o più (ma anche zero) argomenti in input• Restituire uno o più (ma anche zero) argomenti in output
Output Input
Function
IntroduzioneallaprogrammazioneinMATLAB:Parte1 32/88
Funzioni– 3/4
• Una funzione può essere vista come una sorta di “blackbox”• Il suo codice sorgente ed il suo Workspace (stato) risultanonascosti al chiamante• Una funzione comunica con il “mondo esterno” soltantousando le proprie variabili di input e output
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Output Input
Function
33/88
Funzioni– 4/4• Perché usare le funzioni?
• Riusabilità• Una funzione può essere usata più volte, senza necessità diriscrivere ogni volta il codice sorgente (istruzioni) che essacontiene
• Leggibilità del codice• Un programma che risolve un problema complesso, può esseresuddiviso più sotto-programmi (funzioni), ognuno dei quali risolveun sotto-problema (divide-et-impera)
• Gestibilità del codice
IntroduzioneallaprogrammazioneinMATLAB:Parte1 34/88
M-FileFunction – 1/11
•MATLAB mette già a disposizione diverse funzioni, dettefunzioni built-in• Alcune delle quali sono state utilizzate nelle lezioni precedenti• Ad esempio max, sum, sqrt, etc
• Inoltre, MATLAB permette all’utente di creare propriefunzioni, dette funzioni user-defined
IntroduzioneallaprogrammazioneinMATLAB:Parte1 35/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [variabili di output] = nome_funzione(variabili di input)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 36/88
M-FileFunction – 2/11
• Le variabili di output sono quelle i cui valori vengonocalcolati dalla funzione, utilizzando i valori delle variabili diinput• Le variabili di output sono racchiuse tra parentesi quadre (chesono facoltative quando c’è un solo output)
• Le variabili di input devono essere racchiuse tra parentesitonde• La parola function nella riga di definizione della funzione deveessere scritta in lettere minuscole
function [variabili di output] = nome_funzione(variabili di input)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 37/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 38/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
Output
IntroduzioneallaprogrammazioneinMATLAB:Parte1 39/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
Input
IntroduzioneallaprogrammazioneinMATLAB:Parte1 40/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
OutputInput
IntroduzioneallaprogrammazioneinMATLAB:Parte1 41/88
• Vediamo come creare in MATLAB una funzione user defined
• Sintassi per creare una funzione definita dall’utente
M-FileFunction (4)
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
OutputInput
IntroduzioneallaprogrammazioneinMATLAB:Parte1 42/88
M-FileFunction – 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
Nomedellafunzione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 43/88
M-FileFunction (4)• Vediamo come creare una funzione user defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
Nomedellafunzione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 44/88
M-FileFunction- 2/11• Vediamo come creare in MATLAB una funzione user-defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 45/88
M-FileFunction (4)• Vediamo come creare una funzione user defined
• Sintassi per creare una funzione definita dall’utente
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
corpo_funzione
46/88
M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Definizione(odichiarazione)dellafunzione
47/88
M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
1variabilediinput
Definizione(odichiarazione)dellafunzione
48/88
M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
1variabiledioutput
Definizione(odichiarazione)dellafunzione
49/88
M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero)
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
1variabiledioutput
N.B. Inomidellevariabilidioutputpresentinelladefinizionedellafunzionedevonoessereidenticiaquellidellevariabiliincuisonomemorizzatiivalori(calcolati)chelafunzionedeverestituirecomeoutput
Definizione(odichiarazione)dellafunzione
50/88
M-FileFunction – 3/11• Esempio 1 (Area Triangolo Equilatero – Con Commenti)function area = area_triangolo_equilatero(lato)
%La funzione prende in input la lunghezza di un lato e %restituisce in output l’area del triangolo
%L'area del triangolo equilatero può essere calcolata %dividendo per 4 la radice quadrata di 3; il risultato %ottenuto da tale divisione deve essere moltiplicato per %la dimensione del lato, elevata al quadrato
area = sqrt(3)/4 * lato^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 51/88
M-FileFunction – 4/11• Esempio 2 (Area Sfera)function area = area_sfera(raggio)
area = 4 * pi * raggio^2;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Definizione(odichiarazione)dellafunzione
52/88
M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)
area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Definizione(odichiarazione)dellafunzione
53/88
M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)
area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
2 variabilidioutput
Definizione(odichiarazione)dellafunzione
54/88
M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)function [area, volume] = area_volume_sfera(raggio)
area = area_sfera(raggio);volume = 4/3 * pi * raggio^3;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1
2 variabilidioutput
N.B. Inomidellevariabilidioutputpresentinelladefinizionedellafunzionedevonoessereidenticiaquellidellevariabiliincuisonomemorizzatiivalori(calcolati)chelafunzionedeverestituirecomeoutput
Definizione(odichiarazione)dellafunzione
55/88
M-FileFunction – 5/11• Esempio 3 (Area e Volume Sfera)
• Osservazione: all’interno di una funzione è possibile invocare una o piùfunzioni user-defined e/o funzioni built-in di MATLAB
• NOTA: Le funzioni user-defined, per poter essere invocate, devonoessere state precedentemente memorizzate (salvate) nel relativo M-File Function• Vediamo come…
function [area, volume] = area_volume_sfera(raggio)
area = area_sfera(raggio); à invocazioneaun’altrafunzionevolume = 4/3 * pi * raggio^3;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 56/88
M-FileFunction – 6/11• Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction
• Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione
• Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 57/88
• Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction
• Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione
• Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
M-FileFunction (4)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 58/88
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
• Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction
• Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione
• Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)
M-FileFunction (4)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 59/88
function [out1,out2,...,outN] = nome_funzione(in1,in2,...,inM)
end
• Le funzioni user-defined, per poter essere invocate, devono esserestate precedentemente memorizzate (salvate) nel relativo M-FileFunction
• Salvare una funzione user-defined in unM-File Function• Il nome della funzione (nome_funzione) deve essere uguale al nome del file incui sarà salvata tale funzione
• Ad es., se il nome della funzione è media, tale funzione deve essere salvata nel filemedia.m (N.B. MATLAB suggerisce già il nome corretto da dare alla funzione)
M-FileFunction – 6/
IntroduzioneallaprogrammazioneinMATLAB:Parte1
NuoveversionidiMATLAB
60/88
M-FileFunction – 7/11
• Un M-file Function ha estensione .m ed il suo contenuto deveiniziare con la parola chiave function• Seguita da eventuali parametri di input e di output
• Ogni M-file Function ha un proprio workspace, separato dalWorkspace mostrato in MATLAB• Tutte le variabili all’interno dell’M-file Function vengono dette “locali” adesso• Esistono soltanto all’interno della funzione stessa• Non vengono viste dall’ambiente MATLAB o da altre eventuali M-file Functionchiamanti
IntroduzioneallaprogrammazioneinMATLAB:Parte1 61/88
M-FileFunction – 8/11• Una volta memorizzata la funzione user-defined nelrelativo M-File Function (nella Current Directory), talefunzione può essere invocata dalla Command Window diMATLAB
IntroduzioneallaprogrammazioneinMATLAB:Parte1 62/88
M-FileFunction – 8/11• Dopocheèstatacreata(dichiarata),unafunzionepuòessereutilizzata(invocata),fornendogliininputgliopportuniparametri
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
>> area_triangolo_equilatero(3)
ans =
3.8971
Dichiarazione
Invocazione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 63/88
M-FileFunction – 8/11• Dopocheèstatacreata(dichiarata),unafunzionepuòessereutilizzata(invocata),fornendogliininputgliopportuniparametri
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
>> area_triangolo_equilatero(3)
ans =
3.8971
Dichiarazione
Invocazione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 64/88
M-FileFunction – 8/11• N.B.Èimportantenotareladifferenzatradefinizione(Dichiarazione)dellafunzioneeduso(Invocazione)dellafunzionestessa
function area = area_triangolo_equilatero(lato)
area = sqrt(3)/4 * lato^2;
end
>> area_triangolo_equilatero(3)
ans =
3.8971
Dichiarazione
Invocazione
IntroduzioneallaprogrammazioneinMATLAB:Parte1 65/88
M-FileFunction – 8/11• Ivalorirestituitiinoutputdaunafunzionepossonoessereassegnatiavariabili• ChesarannovisibilinelWorkspace diMATLAB
>> somma = sumTwoNums(3,4)
somma =
7
function mySum = sumTwoNums(a,b)
mySum = a+b;
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 66/88
M-FileFunction – 8/11• Ivalorirestituitiinoutputdaunafunzionepossonoessereassegnatiavariabili• ChesarannovisibilinelWorkspace diMATLAB
>> [area, volume] = area_volume_sfera(6)
area = 452.3893
volume = 904.7787
IntroduzioneallaprogrammazioneinMATLAB:Parte1 67/88
M-FileFunction – 9/11• Parametri formali• I parametri formali sono quelli indicati in fase di dichiarazione dellafunzione• Esempio
• raggio è un parametro formale di input della funzionearea_volume_sfera
function [area, volume] = area_volume_sfera(raggio) ...
end
IntroduzioneallaprogrammazioneinMATLAB:Parte1 68/88
M-FileFunction – 10/11• Parametri attuali• I parametri attuali sono quelli indicati in fase di invocazione dellafunzione
• Esempio
• In questo caso, raggio è un parametro attuale di input della funzioneinvocata area_sfera
.
. area = area_sfera(raggio);...
IntroduzioneallaprogrammazioneinMATLAB:Parte1 69/88
M-FileFunction – 11/11• I parametri possono essere di qualsiasi tipo• Array, matrici, scalari, etc..
• I parametri attuali vengono associati a quelli formalitenendo conto della posizione• Il primo parametro attuale viene associato al primo parametroformale, il secondo attuale al secondo formale, etc..
• È necessario che l’invocazione a una funzione avvengacon un numero di parametri attuali uguale al numero deiparametri formali
IntroduzioneallaprogrammazioneinMATLAB:Parte1 70/88
>> area_triangolo = areaTriangolo(5, 3)
area_triangolo =
7.5000
M-FileFunction – 11/11function area_triangolo = areaTriangolo(base, altezza)
area_triangolo = (base * altezza) / 2;
end
2parametriformali:corrispondentirispettivamenteallabaseedall’altezza
2parametriattuali:corrispondentirispettivamenteallabaseedall’altezza
N.B.Ilprimoparametroattualedevecorrisponderealprimoparametroformale,ilsecondoparametroattualedevecorrisponderealsecondoparametroformaleecosìvia…
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Dichiarazio
neInvocazio
ne
71/88
Input/Output– 1/6• MATLAB fornisce vari comandi che permettono di ottenere l’inputdegli utenti e formattare i dati di output (i risultati ottenutieseguendo i comandi di MATLAB)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 72/88
Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window
• Esempio>> x = input('Inserisci x: ')
IntroduzioneallaprogrammazioneinMATLAB:Parte1 73/88
Input/Output– 2/6• Il comando input visualizza un testo sullo schermo, aspetta che l’utentedigiti qualcosa e poi memorizza l’input nella variabile specificata
• Esempio
>> x = input('Inserisci x: ')
IntroduzioneallaprogrammazioneinMATLAB:Parte1
StringamostrataavideoVariabileincuiverràmemorizzatol’inputdigitatodall’utente
74/88
Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window
• Esempio>> x = input('Inserisci x: ')Inserisci x:
IntroduzioneallaprogrammazioneinMATLAB:Parte1 75/88
Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window
• Esempio>> x = input('Inserisci x: ')Inserisci x:
Attendel’inputdell’utente
IntroduzioneallaprogrammazioneinMATLAB:Parte1 76/88
Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window
• Esempio>> x = input('Inserisci x: ')Inserisci x: 45
x =
45
IntroduzioneallaprogrammazioneinMATLAB:Parte1 77/88
Input/Output– 2/6• Con il comando input è possibile ottenere un input da partedell’utente tramite il prompt del Command Window
• Esempio>> x = input('Inserisci x: ')Inserisci x: 45
x =
45
Memorizzanellavariabilex ilvalorepresoininput,ovvero,45
IntroduzioneallaprogrammazioneinMATLAB:Parte1 78/88
Input/Output– 3/6• Esempio 2
>> a = input('a: ');a: 125>> b = input('b: ');b: 270>> c = input('c: ');c: 391>> average = (a+b+c)/3
average =
262
IntroduzioneallaprogrammazioneinMATLAB:Parte1 79/88
Input/Output– 3/6
IntroduzioneallaprogrammazioneinMATLAB:Parte1
Comealsolito,maggioriinformazionisulcomandopossonoessereottenuteutilizzandoilcomandohelp
80/88
Input/Output– 4/6• Generalmente vengono utilizzati due modi per mostrare l’output inMATLAB• disp• fprintf
• Il comando disp ha il vantaggio di essere molto semplice dautilizzare, ma fornisce un controllo limitato su ciò che può esseremostrato in output
• Il comando fprintf è estremamente completo nella gestionedell’output, ma non è di facile utilizzo• Possibilità di specificare numerose opzioni riguardanti come verràvisualizzato l’output (maggiori informazioni digitando il comando helpfprintf)
IntroduzioneallaprogrammazioneinMATLAB:Parte1 81/88
Input/Output– 4/6• Esempi di utilizzo del comando disp
>> disp('stringa')stringa
>> disp(['stringa1','stringa2','stringa3'])stringa1stringa2stringa3
>> disp(['stringa ', num2str(10)])stringa 10
IntroduzioneallaprogrammazioneinMATLAB:Parte1 82/88
Input/Output– 4/6• Esempi di utilizzo del comando disp
>> disp('stringa')stringa
>> disp(['stringa1','stringa2','stringa3'])stringa1stringa2stringa3
>> disp(['stringa ', num2str(10)])stringa 10
IMPORTANTE:num2str trasformaunnumeroinunastringa,inmodochepossaesserestampatadadisp
IntroduzioneallaprogrammazioneinMATLAB:Parte1 83/88
Input/Output– 5/6• Esempio 1 (Utilizzo comando disp)
>> a = 46; b = 35; c = 100;>> disp('Stamperò il valore di a e la somma b + c')Stamperò il valore di a e la somma b + c>> disp(['Il valore della variabile a è :', num2str(a)])Il valore della variabile a è :46>> disp(['La somma b + c è:', num2str(b+c)])La somma b + c è:135
IntroduzioneallaprogrammazioneinMATLAB:Parte1 84/88
Input/Output– 6/6• ÈpossibiledecidereilformatodivisualizzazionedeirisultatiprodottidaMATLAB,medianteilcomandoformat• Ilcomandoformat determinal’aspettodeinumerisulloschermo
•MATLAButilizzamoltecifresignificativeneisuoicalcoli,mararamenteservonotutte
• IlformatostandarddivisualizzazionediMATLAButilizzaquattrocifredecimali
IntroduzioneallaprogrammazioneinMATLAB:Parte1 85/88
• È possibile decidere il formato di visualizzazione del risultato tramiteil comando format• format short: 4 cifre decimali (formato standard o di default); Ad es.,13.6745
• format long : 16 cifre. Ad es., 17.27484029463547• format short e: 5 cifre (4 decimali) più l’esponente. Ad es.,6.3792e+03
• format long e: 16 cifre (15 decimali) più l’esponente. Ad es.,6.379243784781294e-04
• format bank: 2 cifre decimali. Ad es., 126.73• format +: Positivo, negativo o zero. Ad es., +• format rat: Approssimazione razionale. Ad es., 43/7• format compact: Elimina le righe vuote• format loose: Annulla l’effetto di format compact
Input/Output– 6/6
IntroduzioneallaprogrammazioneinMATLAB:Parte1 86/88
È possibile decidere il formato di visualizzazione delrisultato tramite il comando formatformat short: 4 cifre decimali (formato standard o di default);Ad es., 13.6745format long : 16 cifre. Ad es., 17.27484029463547• format short e: 5 cifre (4 decimali) più l’esponente. Ad es.,6.3792e+03• format long e: 16 cifre (15 decimali) più l’esponente. Ad es.,6.379243784781294e-04
format bank: 2 cifre decimali. Ad es., 126.73format +: Positivo, negativo o zero. Ad es., +format rat: Approssimazione razionale. Ad es., 43/7format compact: Elimina le righe vuoteformat loose: Annulla l’effetto di format compact
Input/Output– 6/6
IntroduzioneallaprogrammazioneinMATLAB:Parte1
N.B.Inquestocontestoe nonrappresentailnumeroe di Nepero,cheèallabasedeilogaritminaturali,mal’inizialedellaparola“esponente”
87/88
Riferimenti• Capitolo1• Paragrafo1(Comandidiformattazione)• Paragrafi4[FilescriptedEditor/Debugger]e5[LaguidadiMATLAB]
• Capitolo3• Paragrafi1[Funzionimatematichedibase]e2[Funzionidefinitedall’utente,finoaVariantinellachiamatadiunafunzione (incluso)]
IntroduzioneallaprogrammazioneinMATLAB:Parte1 88/88