Sei sulla pagina 1di 51

Lezione 2 – Introduzione a MATLAB

Contenuto
§ Dichiarazione e manipolazione di variabili § Strutture condizionali
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Operazioni elementari • If
§ Funzioni • For
• funzioni definite dall’utente • While
• funzioni predefinite § Cenni di grafica
§ Script
§ Function

Riferimenti Bibliografici
§ www.mathworks.com/products/matlab/

§ Script allegati: seno.m, log3.m, abslog3.m, cicloif.m, ciclofor.m, if_for.m, ciclowhile.m, grafico2D.m, grafici2D.m,
Massimiliano Villone

grafico3D.m, superficie3D.m
Introduzione a MATLAB®

Matrix Laboratory à MATLAB


Identificazione e Simulazione di Processi Chimici AA 2023/24

§ E’ un software di calcolo molto diffuso in enti di ricerca ed aziende.


• Campi di impiego: matematica numerica, statistica, controllo di sistemi, bioinformatica, finanza…

§ Possiede strumenti grafici 2D e 3D.

§ Lavora con matrici: ogni oggetto gestito da MATLAB è una matrice.

§ È software prevalentemente numerico.


• Se è installato il Symbolic Math Toolbox, può eseguire anche calcoli simbolici.
Massimiliano Villone

§ È case sensitive: a e A sono oggetti differenti.

2/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Interfaccia grafica utente MATLAB (R2023b)
Identificazione e Simulazione di Processi Chimici AA 2023/24

Ribbon

Tasto selezione Percorso


cartella di cartella di
Contenuto lavoro lavoro
cartella di
lavoro
Workspace
(elenco
variabili
Finestra dei salvate in
memoria)
comandi
Massimiliano Villone

Dettagli file
contenuti
nella 3/51
ISPC – Lezione 2
cartella di Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (1/6)
§ Tutte le variabili gestite da MATLAB sono matrici (in generale, di dimensioni 𝑚 × 𝑛, con 𝑚 numero di righe e 𝑛 numero
di colonne).
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Scalare è matrice 1 × 1.
• Vettore riga è matrice 1 × 𝑛.
• Vettore colonna è matrice 𝑚 × 1.

§ Per dichiarare uno scalare (per esempio, a), bisogna attribuirgli un valore tramite il comando =
>> a=17 Input
a = Output
17

§ Per evitare stampa a video di un output, si pospone ; alla dichiarazione dell’input:


>> a=17;
Massimiliano Villone

§ Una volta dichiarata, la variabile a rimane nella memoria di MATLAB e vale 17.
• Per attribuirle un valore diverso, basta ridichiararla.

§ Per cancellare la variabile a dalla memoria, si scrive 4/51


ISPC – Lezione 2
>> clear a Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (2/6)
§ Per cancellare tutte le variabili dal Workspace:
>> clear
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Per pulire lo schermo:


>> clc

§ Dichiarazione vettore riga: § Dichiarazione vettore colonna:


>> u=[1 2 3 4] spazio separa >> v=[1;2;3;4] punto e
u = elementi di una riga v = virgola
1 2 3 4 1 separa
2 elementi
oppure: 3 di una
>> u=[1,2,3,4] virgola separa 4 colonna
Massimiliano Villone

u = elementi di una riga


1 2 3 4

§ Dichiarazione oggetto vuoto: >> z=[]


5/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (3/6)
§ Dichiarazione matrice:
>> M=[1 2 3; 4 5 6] >> D=[1 2 3 4; 5 6 7]
Identificazione e Simulazione di Processi Chimici AA 2023/24

M = Dimensions of matrices being


1 2 3 concatenated are not consistent.
4 5 6
punto e virgola separa righe Matrice definita erroneamente: le righe non hanno lo
stesso numero di elementi!
§ Valutazione dimensioni oggetti
• Vettori:
>> length(v)
ans = risposta (answer)
4 # elementi (nella riga o colonna)
Massimiliano Villone

• Matrici:
>> size(M)
ans =
2 3 # colonne
# righe 6/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (4/6)
§ Esistono alcuni comandi predefiniti di MATLAB che consentono di creare velocemente oggetti caratterizzati da una
certa «regolarità».
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Vettore riga con elementi equispaziati con passo unitario:


>> a=[2:9]
a =
2 3 4 5 6 7 8 9

• Vettore riga con elementi equispaziati con passo definito dall’utente:


>> b=[0:0.1:0.6]
b =
0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
L’utente dichiara l’estremo iniziale dell’intervallo, il passo e l’estremo finale. Se, seguendo il passo, non si raggiunge
esattamente l’estremo finale, MATLAB si ferma all’elemento interno all’intervallo più vicino all’estremo finale.
Massimiliano Villone

>> w=[3:0.35:5]
w =
3.0000 3.3500 3.7000 4.0500 4.4000 4.7500
7/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (5/6)
• Matrice:
>> A=[0:0.1:0.5; 6:-1:1]
Identificazione e Simulazione di Processi Chimici AA 2023/24

A =
0 0.1000 0.2000 0.3000 0.4000 0.5000
6.0000 5.0000 4.0000 3.0000 2.0000 1.0000

Nell’esempio, si è costruita una matrice con 2 righe, la prima con elementi crescenti da 0 a 0.5 con passo 0.1 e la
seconda con elementi decrescenti da 6 a 1 con passo -1.

Quando si opera con i comandi predefiniti, bisogna stare attenti alla coerenza dimensionale della matrice che si sta
assemblando.

>> M=[1:0.5:3;2:4]
Massimiliano Villone

Dimensions of matrices being concatenated are not consistent

Errore: la prima riga ha 5 elementi e la seconda 3!

8/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Dichiarazione di variabili (6/6)
• Vettore con un numero definito di elementi equispaziati tra due estremi:
>> a=linspace(3,6,5) # elementi
Identificazione e Simulazione di Processi Chimici AA 2023/24

a =
3.0000 3.7500 4.5000 5.2500 6.0000
estremo estremo
iniziale finale

• Vettore con un numero definito di elementi spaziati logaritmicamente:


>> b=logspace(2,4,3) # elementi
b =
100 1000 10000
estremo iniziale estremo finale
Massimiliano Villone

intesi come esponenti della base 10 (sottintesa)

9/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Manipolazione di variabili (1/4)
§ Visualizzazione/sostituzione di elementi/blocchi
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Vettori: • Matrici:
>> u=[7,16,1]; >> A=[1,45,7.42;5.33,4,8];
>> u(3) visualizzazione >> A(1,3) visualizzazione elem. 𝐴13
ans = elemento di posto 3 ans =
1 7.4200
>> u(1)=8 sostituzione >> A(1,2)=3.14 sost. elem. 𝐴12
u= elemento di posto 1 A =
8 16 1 1.0000 3.1400 7.4200
>>u([1,3])=[0,9] 5.3300 4.0000 8.0000
u= >> A(1,2:3)=[2.5,6.66]
0 16 9 A =
Massimiliano Villone

sostituzione elementi posti 1 e 3 1.0000 2.5000 6.6600


5.3300 4.0000 8.0000

sostituzione elementi riga 1, colonne 2 e 3 10/51


ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Manipolazione di variabili (2/4)
§ Eliminazione di elementi/blocchi
• Vettori: • Matrici:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> z=[1,2,3,4,5,6,7]; >> K=[3,6,9;12,15,18;21,24,27];


>> z(2)=[] >> K(1,:)=[] eliminazione riga 1
z = K =
1 3 4 5 6 7 12 15 18
21 24 27
eliminazione elemento di posto 2 >> K(:,2:3)=[] eliminazione colonne da 2 a 3
K =
>> w=[2,4,6,8,10,12]; 12
>> w([1,3,4])=[] 21
w = Nel caso di matrici, non si possono eliminare singoli elementi,
4 10 12 ma bisogna eliminare righe o colonne intere.
Massimiliano Villone

K(m,:) individua gli elementi sulla riga 𝑚 (tutte le colonne),


K(:,n) individua elementi su colonna 𝑛 (tutte le righe).
eliminazione elementi di posti
1,3 e 4.

11/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Manipolazione di variabili (3/4)
§ Affiancamento di oggetti
• Affiancamento per colonne di vettori/matrici:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> u=[1 2 3]; >> a=[1;3;5;7];


>> v=[4 5 6 7 8]; >> b=[2;4;6;8];
>> z=[u v] >> c=[a,b]
z = c =
1 2 3 4 5 6 7 8 1 2
3 4
>> A=[1 2 3;4 5 6]; 5 6
>> B=[7 8 9 10;11 12 13 14]; 7 8
>> C=[A B]
C =
1 2 3 7 8 9 10
Massimiliano Villone

4 5 6 11 12 13 14

Si affiancano le colonne. I blocchi da affiancare devono avere lo stesso numero di righe.

12/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Manipolazione di variabili (4/4)
• Affiancamento per righe di vettori/matrici:
>> x=[1 4 7]; >> a=[10;9;8];
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> y=[2 5 8]; >> b=[7;5];


>> z=[x;y] >> c=[a;b]
z = c =
1 4 7 10
2 5 8 9
8
>> P=[10 12 14 16 18;20 22 24 26 28]; 7
>> Q=[3 6 9 12 15;18 21 24 27 30;33 36 39 42 45]; 5
>> R=[P;Q]
R =
10 12 14 16 18
20 22 24 26 28
Massimiliano Villone

3 6 9 12 15
18 21 24 27 30
33 36 39 42 45
Si affiancano le righe. I blocchi da affiancare devono avere lo stesso numero di colonne.
13/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Operazioni elementari (1/5)
§ La finestra dei comandi MATLAB può essere impiegata come calcolatrice scientifica per operazioni su scalari:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> 6+7 >> 2^4


ans = addizione ans = potenza
13 16

>> 12-8 >> sqrt(9)


ans = sottrazione ans = radice quadrata
4 3

>> 3*5 >> (((3+12)*4)/7-3)^(-1)


ans = moltiplicazione ans = espressione
15 0.1795
Massimiliano Villone

>> 14/5
ans = divisione
2.8000
14/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Operazioni elementari (2/5)
§ Algebra vettoriale
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Addizione di vettori: • Prodotto scalare:

>> u=[1,2,3]; >> dot(u,v)


>> v=[4,5,6]; ans =
>> u+v 32
ans =
5 7 9 • Prodotto vettoriale:

• Sottrazione di vettori: >> cross(u,v)


ans =
>> u-v -3 6 -3
Massimiliano Villone

ans =
-3 -3 -3

15/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Operazioni elementari (3/5)
• Addizione tra matrici:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> A=[1 2 3;4 5 6;7 8 9];


>> B=[2 4 6;9 10 12;14 16 18];
>> A+B
ans =
3 6 9
13 15 18
21 24 27

• Sottrazione tra matrici:

>> A-B
Massimiliano Villone

ans =
-1 -2 -3
-5 -5 -6
-7 -8 -9
16/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Operazioni elementari (4/5)
• Prodotto righe per colonne:
>> P=[1 2 3; 4 5 6];
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> Q=[3 6 9 12;15 18 21 24;27 30 33 36];


>> P*Q
ans =
114 132 150 168
249 294 339 384
Il risultato del prodotto righe per colonne tra una matrice 𝑚 × 𝑛 ed una matrice 𝑛 × 𝑝 (notare la ripetizione della 𝑛)
è una matrice 𝑚 × 𝑝.

§ Operazioni elemento per elemento


• Moltiplicazione:
>> r=[4 8 12]; Se si antepone . all’operatore * (o /),
MATLAB moltiplica (o divide) ogni elemento
Massimiliano Villone

>> s=[5 15 25];


>> r.*s del primo oggetto per l’elemento di posto
corrispondente del secondo oggetto.
ans =
Affinché l’operazione sia eseguibile, le
20 120 300 dimensioni degli oggetti da moltiplicare (o
dividere) devono coincidere. 17/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Operazioni elementari (5/5)
• Divisione:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> X=[10 9 8;7 6 5;4 3 2];


>> Y=[2 4 6;8 10 12;14 16 18];
>> X./Y
ans =
5.0000 2.2500 1.3333
0.8750 0.6000 0.4167
0.2857 0.1875 0.1111

• Elevazione a potenza:

>> Y=[1 2 3;4 5 6]; Se si antepone . all’operatore ^ , MATLAB eleva ogni elemento dell’oggetto
Massimiliano Villone

>> Y.^2 all’esponente indicato.


ans =
1 4 9
16 25 36
18/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Funzioni vettorizzate definite dall’utente
§ Dato un oggetto x, è possibile calcolare un oggetto y (delle stesse dimensioni) tale che ogni elemento di y sia legato al
corrispondente elemento di x secondo una legge funzionale definita dall’utente:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> x=[0:0.5:3]
x =
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000
>> y=2*x.^2./(1+x)
y =
0 0.3333 1.0000 1.8000 2.6667 3.5714 4.5000

$% !
Gli elementi di y sono calcolati applicando la funzione 𝑓 𝑥 = agli elementi di x (si noti il punto anteposto agli
&'%
operatori ^ e /).
Massimiliano Villone

19/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Funzioni predefinite
§ MATLAB dispone di una libreria di funzioni predefinite. Le più comuni (supponendo di aver definito l’oggetto x) sono
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> sin(x) seno


>> cos(x) coseno
>> tan(x) tangente
>> cot(x) cotangente
>> asin(x) arcoseno
>> acos(x) arcocoseno
>> atan(x) arcotangente
>> acot(x) arcocotangente
>> exp(x) esponenziale
>> log(x) logaritmo NATURALE
>> log10(x) logaritmo in base 10
Massimiliano Villone

>> log2(x) logaritmo in base 2

§ Inoltre, MATLAB riconosce di default i e j come unità immaginaria e pi come π (per cui si consiglia di non chiamare
i, j o pi variabili definite dall’utente, poiché si sovrascriverebbero in memoria i valori predefiniti).
20/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Altri comandi di uso frequente (1/4)
• Trasposizione di vettore o matrice: • Calcolo del determinante di una matrice (quadrata):
>> A=[10 16 20;31 46 23;32 24 19] >> det(A)
Identificazione e Simulazione di Processi Chimici AA 2023/24

A = ans =
10 16 20 -8988
31 46 23
32 24 19
>> A’
ans =
10 31 32
16 46 24
20 23 19
• Inversione di matrice (quadrata invertibile):
>> inv(A)
Massimiliano Villone

ans =
-0.0358 -0.0196 0.0614
-0.0164 0.0501 -0.0434
0.0810 -0.0303 0.0040
21/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Altri comandi di uso frequente (2/4)
§ Valore assoluto elementi di un oggetto:
>> a=[-6.3,5.9,-4.2]
Identificazione e Simulazione di Processi Chimici AA 2023/24

a =
-6.3000 5.9000 -4.2000
>> abs(a)
ans =
6.3000 5.9000 4.2000

§ Calcolo modulo di un vettore: § Somma elementi di un oggetto:


>> norm(a) >> sum(a)
ans = ans =
9.5990 -4.6000
Massimiliano Villone

§ Estrazione elemento minimo di un oggetto: § Estrazione massimo:


>> min(a) >> max(a)
ans = ans =
-6.3000 5.9000
22/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Altri comandi di uso frequente (3/4)
§ Introduzione matrice 𝑚 × 𝑛 di zeri: § Introduzione matrice identica di dimensione 𝑛:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>>A=zeros(2,3) >> I=eye(3)


A = I =
0 0 0 1 0 0
0 0 0 0 1 0
0 0 1
§ Introduzione matrice 𝑚 × 𝑛 di valori unitari:
§ Introduzione matrice diagonale:
>> B=ones(3,4)
B = >> C=diag([3 6 9])
1 1 1 1 C =
1 1 1 1 3 0 0
Massimiliano Villone

1 1 1 1 0 6 0
0 0 9
NOTA: se applicato ad un vettore, il comando diag crea
una matrice quadrata che ha gli elementi del vettore sulla
diagonale principale; se applicato ad una matrice quadrata, 23/51
il comando diag crea un vettore composto dagli elementi ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Altri comandi di uso frequente (4/4)
§ Per ottenere informazioni ed aiuto rispetto alle funzionalità dei comandi MATLAB, si può usare la funzione “help”:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> help sin


sin Sine of argument in radians.
sin(X) is the sine of the elements of X.

See also asin, sind.

Other functions named sin

§ Nella finestra dei comandi, MATLAB dispone delle seguenti funzioni:


• storia dei comandi: se si preme le freccia in alto, il software visualizza la lista dei comandi digitati di recente,
• completamento automatico: se si sta digitando un comando e si preme “TAB”, il software suggerisce tutti i possibili
Massimiliano Villone

completamenti della stringa che si sta digitando,


• aiuto sintattico: se si digita un comando, il software suggerisce gli input richiesti dalla sintassi dello stesso).

24/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Script (1/2)
§ Oltre che codice di calcolo, MATLAB è linguaggio di programmazione.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Si possono costruire sequenze di istruzioni (programmi), che vengono lette ed eseguite secondo l’ordine di
dichiarazione.

§ Tali sequenze possono essere inserite direttamente nella finestra dei comandi (scomodo!) o in appositi file, detti script
(o M-file o file batch), che possono essere “chiamati” ed eseguiti nella finestra dei comandi.

§ 3 possibilità per la creazione di un nuovo script:


• nel menu “HOME”, cliccare sull’icona “New Script”,
• nel menu “HOME”, cliccare sull’icona “New” e poi “Script” nel menu a tendina che si apre.
• Digitare edit nella finestra dei comandi.
Massimiliano Villone

§ Salvataggio script:
• nel menu “EDITOR”, cliccare sull’icona “Save” e poi “Save As” nel menu a tendina che si apre, ed inserire il nome
desiderato (estensione «.m»).
Assicurarsi di salvare il file nella cartella di lavoro. 25/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Script (2/2)
§ 3 possibilità per aprire uno script esistente:
• nel menu “HOME”, cliccare sull’icona “Open”,
Identificazione e Simulazione di Processi Chimici AA 2023/24

• doppio clic sull’icona dello script nella finestra che mostra il contenuto della cartella di lavoro,
• digitare edit nome.m nella finestra dei comandi
(digitare l’estensione “.m” è facoltativo).

§ 2 possibilità per esecuzione script:


• digitare nome (senza estensione .m) nella finestra dei comandi,
• nel menu “EDITOR”, cliccare sull’icona “Run”.

§ Esempio (cfr. seno.m):


% In questo script si dichiara un vettore x contenente valori compresi tra 0 e
% 2*pigreco con passo 2*pigreco/100 e si calcola il vettore y = sin(x).
Massimiliano Villone

x = [0:2*pi/100:2*pi];
y = sin(x)
• Il testo preceduto da % è riconosciuto da MATLAB come commento e non come istruzione da eseguire.

26/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Function (1/3)
§ In MATLAB, è possibile introdurre funzioni definite dall’utente.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Una function è uno script (o una parte di esso) che calcola valori di output a partire da valori di input tramite
l’esecuzione di una sequenza di operazioni definita dall’utente.

§ Esempio 1: si desidera definire la funzione “log3”, che calcola il logaritmo in base 3 degli elementi di una matrice.
)*+ , ). %
(Per costruire la function, E’ utile ricordare che log ( 𝑏 = )*+" ( → log - 𝑥 = ). - )
"
• Si apre l’editor degli script.
• Si scrive
output nome funzione

function f = log3(x) input


f = log(x)/log(3);
Massimiliano Villone

• Si salva lo script nella cartella di lavoro con il nome attribuito alla funzione (nell’esempio, “log3.m”).

27/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Function (2/3)
• La funzione “log3” può ora essere applicata a qualsiasi quantità dichiarata nella finestra dei comandi o in altri
script salvati nella stessa cartella di lavoro della function.
Identificazione e Simulazione di Processi Chimici AA 2023/24

-MATLAB tratta la function come una propria funzione predefinita.

>> a=linspace(0.1,2,5);
>> log3(a)
ans =
-2.0959 -0.5037 0.0444 0.3841 0.6309

L’input non deve avere necessariamente lo stesso nome usato nella dichiarazione formale della function.
Massimiliano Villone

28/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Function (3/3)
§ Esempio 2: si desidera definire la funzione “abslog3”, che calcola il valore assoluto del logaritmo in base 3 degli
elementi di una matrice.
Identificazione e Simulazione di Processi Chimici AA 2023/24

• Dopo aver aperto l’editor degli script, si scrive

function g = abslog3(y)
g = abs(log3(y));

• Si salva il file con il nome di “abslog3.m” nella stessa cartella di lavoro della function “log3”, che viene richiamata in
“abslog3”.
• Ora la funzione “abslog3” può essere applicata a qualsiasi matrice nella finestra dei comandi o in altri script salvati
nella stessa cartella di lavoro di “abslog3”.

>> abslog3(a)
ans =
Massimiliano Villone

2.0959 0.5037 0.0444 0.3841 0.6309

29/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Strutture condizionali (1/3)
§ In MATLAB, si possono scrivere programmi che eseguono comandi a seconda che determinate condizioni imposte
dall’utente siano rispettate o meno.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Ciò risulta possibile grazie all’impiego di 3 strutture condizionali:


• se… altrimenti se… altrimenti… à if… else if… else…
• per… esegui… à for…
• finché… esegui… à while…

§ Per impiegare le strutture condizionali, è necessario saper scrivere proposizioni che esprimano condizioni.

§ Ciò può avvenire tramite l’uso di operatori logici:


< minore
<= minore o uguale
Massimiliano Villone

> maggiore
>= maggiore o uguale
== uguale
~= diverso
30/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Strutture condizionali (2/3)
§ Le proposizioni scritte mediante gli operatori logici possono essere vere o false. Se si scrive una proposizione nella
finestra dei comandi, MATLAB restituisce il valore “1” se essa è vera ed il valore “0” se essa è falsa.
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> 3<2 >> 5==6


ans = ans =
logical logical
0 0

>> 7>=7 >> 1~=0


ans = ans =
logical logical
1 1
Massimiliano Villone

§ Più proposizioni posso essere combinate tra loro tramite gli operatori booleani.
• I simboli & e and traducono l’operatore “e”.
• I simboli | e or traducono l’operatore “o”.
• I simboli ~ e not traducono l’operatore “non”.
31/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Strutture condizionali (3/3)
§ Le proposizioni composte mediante l’operatore “e” sono vere solo se le proposizioni semplici sono tutte vere. In ogni
altro caso, esse sono false.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Le proposizioni composte mediante l’operatore “o” sono false solo se le proposizioni semplici sono tutte false. In ogni
altro caso, esse sono vere.
§ L’operatore “non” inverte il valore di verità di una proposizione.

>> 0<1 & 7>5 >> 6<7 | 9<10


ans = ans =
logical logical
1 1
>> and(8<12,6==4) >> or(3==3,1>10)
ans = ans =
logical logical
Massimiliano Villone

0 1
>> ~ ((1>11 & 5==5) | 9~=81) >> not(and(1>11,or(5==5,9~=81)))
ans = ans =
logical logical
0 1 32/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
If (1/2)
§ La struttura condizionale «if» consente di eseguire comandi subordinati al verificarsi di condizioni. La sequenza logica è
Se si verifica la condizione 𝐶& ,
Identificazione e Simulazione di Processi Chimici AA 2023/24

esegui i comandi 𝐼& ,


altrimenti, se si verifica la condizione 𝐶$ ,
esegui i comandi 𝐼$ ,


altrimenti, se si verifica la condizione 𝐶/ ,
esegui i comandi 𝐼/ ,
altrimenti (se nessuna delle condizioni suddette è verificata),
esegui i comandi 𝐼/'& .
FINE.
Massimiliano Villone

§ A seconda di quale delle 𝑁 + 1 condizioni elencate si verifica, MATLAB esegue i comandi ad essa associati ed esce dal
ciclo.
§ NOTA: se il ciclo è costruito (male) in modo che più di una condizione sia verificata, vengono eseguiti i comandi
associati alla prima condizione verificata della sequenza.
33/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
If (2/2)
§ Esempio:
Identificazione e Simulazione di Processi Chimici AA 2023/24

x = input('Digitare un numero reale: ') dichiarare un numero reale x (da finestra dei comandi)
if x < 0 se si verifica la condizione “x < 0”,
disp('Il numero digitato è negativo') eseguire il comando “stampare a video…”,
elseif x > 0 altrimenti, se si verifica condizione “x > 0”,
disp('Il numero digitato è positivo') eseguire il comando “stampare a video…”,
else altrimenti (se nessuna delle precedenti è verificata),
disp('Il numero digitato è nullo') eseguire il comando “stampare a video…”,
end fine

• Salviamo la sequenza di comandi in uno script (cfr. cicloif.m) ed eseguiamolo nella finestra dei comandi, ottenendo il
seguente risultato:
Massimiliano Villone

>> cicloif
Digitare un numero reale: 42
x =
42 34/51
ISPC – Lezione 2
Il numero digitato è positivo Introduzione a MATLAB
06-07/03/24
For (1/2)
§ La struttura condizionale «for» consente di eseguire comandi finché un indice corrente assume valori in un dato
intervallo. La sequenza logica è
Identificazione e Simulazione di Processi Chimici AA 2023/24

Per valori dell’indice compresi tra a e b,


esegui comandi.
FINE.

§ Ad ogni iterazione, dopo l’esecuzione dei comandi, il valore dell’indice corrente è automaticamente incrementato.
§ I comandi possono anche coinvolgere l’indice.

§ Esempio:

x = input('Digitare un numero reale: ‘); dichiarare un numero reale x (da finestra dei comandi)
Massimiliano Villone

for k=1:5 condizione: per k che va da 1 a 5


x = sqrt(x) comandi: sostituisci a x la sua radice quadrata
end fine

35/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
For (2/2)
• Se si salva il ciclo in uno script (cfr. ciclofor.m) e lo si esegue, si visualizza il seguente risultato:
Identificazione e Simulazione di Processi Chimici AA 2023/24

>> ciclofor
Digitare un numero reale: 12.8
x =
3.5777
x =
1.8915
x =
1.3753
x =
1.1727
x =
Massimiliano Villone

1.0829

36/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Combinazione di strutture condizionali (1/2)
§ I cicli «for» e «if» possono essere facilmente integrati.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Esempio:

x = input(‘Inserire un numero: ’) assegnare un valore a x (da finestra dei comandi)


for k = 1:6 per k che va da 1 a 6
if k <= 3 se k ≤ 3
x = x/2 sostituire a x la sua metà
else altrimenti (se k > 3)
x = 2*x sostituire a x il suo doppio
end fine ciclo if
end fine ciclo for
Massimiliano Villone

37/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Combinazione di strutture condizionali (2/2)
• I comandi sono implementati nel file if_for.m, eseguendo il quale si ottiene
Identificazione e Simulazione di Processi Chimici AA 2023/24

Inserire un numero: 4
x =
4
x =
2
x =
1
x =
0.5000
x =
1
Massimiliano Villone

x =
2
x =
4
38/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
While (1/2)
§ La struttura condizionale «while» consente di eseguire comandi fintanto che una condizione imposta dall’utente è
verificata. La sequenza logica è la seguente:
Identificazione e Simulazione di Processi Chimici AA 2023/24

Finché si verifica la condizione,


esegui i comandi.
FINE.

§ Esempio:

k = 1; inizializzazione della condizione: k = 1


while k < 8 finché k < 8
disp(k) stampa a video k
k = k+2; aggiorna il valore di k aggiungendo 2
Massimiliano Villone

end fine

39/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
While (2/2)
• Salvando il programma in un file batch (cfr. ciclowhile.m) ed eseguendo, si ha
>> ciclowhile
Identificazione e Simulazione di Processi Chimici AA 2023/24

1
3
5
7
§ NOTA: L’aggiornamento della condizione è cruciale! Se omesso, i risultati possono essere “catastrofici”, come nel
seguente esempio:

k = 1; inizializzazione della condizione: k = 1


while k < 8 finché k < 8
disp(k) stampa a video il valore di k
end fine
Massimiliano Villone

• Se si salva e si esegue questo programma, MATLAB entra in un loop e stampa a video il numero 1 all’infinito.
• Per interrompere un processo, si deve digitare “ctrl + c” nella finestra dei comandi.

40/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Cenni di grafica
§ MATLAB possiede strumenti grafici per la realizzazione di
Identificazione e Simulazione di Processi Chimici AA 2023/24

• istogrammi (cfr. esercitazione sulla statistica descrittiva),

• diagrammi di dati in 2D e 3D,

• grafici di superfici,

• …

§ Il software apre finestre dedicate per la visualizzazione dei grafici, nelle quali compaiono menu per modificarne
l’aspetto.
Massimiliano Villone

§ Per chiudere tutte le finestre grafiche aperte, si deve digitare

>> close all

41/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Diagrammi di dati in 2D (1/2)
§ Date due n-ple di valori x e y, il comando plot diagramma sul piano cartesiano i punti individuati dalle coppie di
elementi di posto corrispondente appartenenti ai due vettori.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Per impostazione di default, i punti sono congiunti da segmenti di retta di colore blu.
1

§ Esempio (cfr. grafico2D.m): 0.8

0.6

x=[0:2*pi/10:2*pi]; 0.4

y=sin(x); 0.2

plot(x,y) 0

-0.2

• Se i vettori x e y contengono i valori di una -0.4

variabile e di una funzione di tale variabile, -0.6


Massimiliano Villone

tanto più è alto il numero di elementi dei vettori, -0.8

tanto più accurato sarà il grafico della funzione. -1


0 1 2 3 4 5 6 7

42/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Diagrammi di dati in 2D (2/2)
x=[0:2*pi/100:2*pi]; 1

0.8

y=sin(x);
Identificazione e Simulazione di Processi Chimici AA 2023/24

0.6

plot(x,y,'LineWidth',2) spessore linea


0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7

• Alcune opzioni grafiche: 0.8

0.6

x=[0:2*pi/100:2*pi]; 0.4

y=sin(x); 0.2

sin(x)
0

plot(x,y,'og','MarkerSize',6) dimensione simboli -0.2

-0.4

tipo simboli colore simboli


Massimiliano Villone

-0.6

(o pallini, . puntini, (g verde, r rosso, -0.8

* stelline, - segmenti…) b blu, k nero, m magenta…)


-1
0 1 2 3 4 5 6 7
x

xlabel('x','FontSize',14) apposizione «etichette» sugli assi con selezione dimensione carattere


ylabel('sin(x)','FontSize',14)
43/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Gestione delle finestre grafiche
§ Per impostazione predefinita, quando si realizza un grafico, esso sovrascrive un eventuale diagramma realizzato
precedentemente.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Per visualizzare un grafico in una finestra distinta, senza sovrascrivere grafici eventualmente già presenti, si può
anteporre il comando figure alla realizzazione del nuovo grafico.
§ Per sovrapporre più grafici nella stessa finestra, si può usare il comando hold on .
• Gli effetti del comando restano validi per tutto il prosieguo dello script o della sessione.
• Si può interrompere la sovrapposizione di grafici con il comando hold off .
§ Esempio (cfr. grafici2D.m): 1

clear
0.8

hold off
0.6

close all 0.4


sin(x)

figure cos(x)

sin(x), cos(x)
0.2

clc 0

plot(x,y3,'k','LineWidth',2)
x = [0:2*pi/100:2*pi];
-0.2

xlabel('x','FontSize',14)
-0.4

y1 = sin(x); -0.6

ylabel('e^x','FontSize',14) -0.8

y2 = cos(x); -1
0 1 2 3 4 5 6 7
Massimiliano Villone

x
y3 = exp(x); 600

hold on 500

plot(x,y1,'LineWidth',2) 400

plot(x,y2,'r','LineWidth',2)

ex
300

xlabel('x','FontSize',14) 200

44/51
ylabel('sin(x), cos(x)','FontSize',14) 100

ISPC – Lezione 2
Introduzione a MATLAB
legend('sin(x)','cos(x)','FontSize',14,'Location','best') 0
0 1 2 3
x
4 5 6 7
06-07/03/24
Diagrammi di dati in 3D
§ Date tre n-ple di valori x, y, z, il comando plot3 diagramma nello spazio cartesiano i punti individuati dalle terne
di elementi di posto corrispondente appartenenti ai tre vettori.
Identificazione e Simulazione di Processi Chimici AA 2023/24

§ Esempio (cfr. grafico3D.m):

t = [0:0.01:5];
r = 1;
c = 1;
x = r*cos(2*pi*t);
y = r*sin(2*pi*t);
z = c*t;
plot3(x,y,z,'r')
grid on attivazione di una griglia
Massimiliano Villone

xlabel('x','FontSize',14) sullo sfondo del grafico


ylabel('y','FontSize',14)
zlabel('z','FontSize',14)

• Nella finestra grafica è possibile manipolare il diagramma (e.g., ruotare la vista, cambiare gli estremi degli assi, …) 45/51
ISPC – Lezione 2
tramite appositi menu. Introduzione a MATLAB
06-07/03/24
Superfici (1/4)
§ Per realizzare diagrammi di superfici, bisogna creare preventivamente una griglia regolare rettangolare.
§ Procediamo tramite un esempio: si desidera diagrammare la funzione reale di due variabili reali 𝑓 𝑥, 𝑦 = −4(𝑥 $ + 𝑦 $ )
Identificazione e Simulazione di Processi Chimici AA 2023/24

per {𝑥, 𝑦} ∈ [−4, 4] ∩ [−4, 4].


• Definiamo i vettori x e y, entrambi composti da 100 elementi equispaziati crescenti da -4 a 4:
x = linspace(-4,4,100);
y = x;
• Generiamo la griglia su cui verrà valutata la funzione:
[xm ym] = meshgrid(x,y);
• Definiamo la funzione vettorizzata di interesse:
f = -4*(xm.^2+ym.^2);
(da notare il punto anteposto all’elevazione a potenza, poiché la funzione va valutata punto per punto nella griglia)
• Diagrammiamo la superficie avente equazione 𝑓 𝑥, 𝑦 = −4(𝑥 $ + 𝑦 $ ):
surf(xm,ym,f)
Massimiliano Villone

xlabel('x','FontSize',14)
ylabel('y','FontSize',14)
zlabel('f(x,y)','FontSize',14)

46/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Superfici (2/4)
• Se si salvano le istruzioni sopra elencate in uno script (cfr. superficie3D.m) e lo si esegue, si ottiene la figura
seguente:
Identificazione e Simulazione di Processi Chimici AA 2023/24
Massimiliano Villone

• Nel grafico, la superficie appare continua.


47/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Superfici (3/4)
• Esistono altri 2 comandi per diagrammare la superficie:
mesh(xm,ym,f)
Identificazione e Simulazione di Processi Chimici AA 2023/24

consente di mettere in evidenza i punti discreti in cui è valutata la funzione.


Massimiliano Villone

48/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Superfici (4/4)
contour(xm,ym,f,20)
consente di diagrammare un numero di curve di isolivello della funzione 𝑓(𝑥, 𝑦) definito dall’utente (tramite il
Identificazione e Simulazione di Processi Chimici AA 2023/24

quarto input nella sintassi del comando).


pbaspect([1 1 1])
consente di regolare l’aspect ratio della finestra grafica.
4

y -1

-2
Massimiliano Villone

-3

-4
-4 -3 -2 -1 0 1 2 3 4
x

49/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Esercizi (1/2)
§ Dichiarare i seguenti oggetti in MATLAB:
1.23 8.47 −5.86 6.12
Identificazione e Simulazione di Processi Chimici AA 2023/24

• 𝑨=
−9.62 −7.06 2.56 −7.06
1 2 3 4
• 𝑩=
5 6 7 8
𝑨
• 𝑪=
𝑩

§ Calcolare le seguenti quantità:


• 𝑨 + 𝑩,
• 𝑨 K 𝑩,
• 𝑨 K 𝑩0 ,
• 𝑪1& ,
• 𝑪 − 𝑰.
Massimiliano Villone

§ Costuire la seguente matrice:


cos(𝑥) 𝑥$
• 𝑭= con 𝒙 = [2,4,6,8,10]
log $ (𝑥) 1 − 𝑥 1&
50/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24
Esercizi (2/2)
§ Elaborare uno script che esegua le seguenti operazioni:
• dichiarazione del vettore 𝒙 = (7 14 21),
Identificazione e Simulazione di Processi Chimici AA 2023/24

• dichiarazione del vettore 𝒚 = (3 6 9),


• calcolo e stampa a video della matrice 𝑨 = 𝒙0 K 𝒚,
• calcolo e stampa a video di una matrice 𝑩 i cui elementi siano i quadrati degli elementi di 𝑨,
• calcolo e stampa a video della matrice 𝐂 = 𝑨 K 𝑩.

§ Elaborare uno script che esegua le seguenti operazioni:


• dichiarazione di un vettore x con 50 elementi equispaziati crescenti da 0 a 1,
• dichiarazione di un vettore i cui elementi obbediscano alla legge 𝑓(𝑥) = 4𝑒 (&1%) ,
• diagramma della funzione 𝑓(𝑥).

§ Elaborare uno script che consenta all’utente di dichiarare una matrice nella finestra dei comandi, verifichi se essa è
Massimiliano Villone

quadrata e, in caso affermativo, ne calcoli la traccia (ossia la somma degli elementi sulla diagonale principale).

§ Elaborare uno script che diagrammi la superficie di equazione 𝑓 𝑥, 𝑦 = cos(𝑥 $ + 𝑦 $ ) per −3 ≤ 𝑥, 𝑦 ≤ 3.

51/51
ISPC – Lezione 2
Introduzione a MATLAB
06-07/03/24

Potrebbero piacerti anche