Upload
buidan
View
222
Download
0
Embed Size (px)
Citation preview
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 1
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Sommario
- Caratteristiche Principali
– Assegnazione di variabili
- Scrittura e manipolazione di matrici e vettori
- Funzioni predefinite in Matlab
- Operazioni elementari con scalari e matrici
- Risoluzione equazioni lineari
- Funzioni vettorizzate ed operatori
-Miscellanea
- Gestione cartelle
Parte 1 Tutorial – Definizioni preliminari
Analisi dei Processi Chimici e Biotecnologici- Matlab®
2
• Matlab è l’acronimo di Matrix Laboratory
• E’ un programma che lavora prevalentemente con matrici: qualunque oggetto introdotto è manipolato come se fosse una matrice
• E’ ideale per:
– Sistemi lineari
– Ha delle eccellenti capacità grafiche
– E’ relativamente facile da usare
– È un linguaggio interpretato e non compilato: le istruzioni sono tradotte in linguaggio macchina
• Lento rispetto ai "veri" linguaggi di programmazione (Fortran, C++ etc.)
– Ha una serie di programmi (istruzioni) aggiuntive in grado di eseguire operazioni più complesse (i Toolbox)
• E’ un software numerico, non simbolico
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 2
Analisi dei Processi Chimici e Biotecnologici- Matlab®
3
• Matlab® è un software versatile che può essere usato a differenti livelli:
– Scrittura in linea delle istruzioni dalla finestra di comando principale.
– Implementazione di programmi tramite scrittura di m-file che possono essere:
• di tipo batch
• di tipo function
Analisi dei Processi Chimici e Biotecnologici- Matlab®
4
Interfaccia di Matlab®• All’avvio, il programma si presenta nella seguente forma
Finestra dei
comandi
Le istruzioni devono essere
digitate in questa
finestra.
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 3
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Primi passi: assegnazione variabili• Le variabili sono sempre trattate in forma di vettore
e/o matrice
• Come definire una variabile nella sessione di lavoro:
• In Matlab non è necessario definire il tipo delle variabili
• Per vedere quali sono le variabili presenti nella nostra sessione di lavoro è possibile usare i comandi who e whos
5
» a = 2
a =
2
»
Il comando “=“ è utilizzato per assegnare ad una variabile (nel nostro caso “a”) un valore (in
questo caso “2”)
promptdei
comandi
Analisi dei Processi Chimici e Biotecnologici- Matlab®
6
Come si aggiorna la finestra
Storia dei comandi
Variabili definite nell’attuale
ambiente di lavoro di Matlab®
(workspace)
Cartella corrente in cui Matlab® sta lavorando:
IMPORTANTE!
Matlab® interpreta la variabile “a” come
una matrice di dimensioni 1×1
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 4
Analisi dei Processi Chimici e Biotecnologici- Matlab®
7
• Una volta assegnato un valore ad una variabile esso rimane in memoria, sino a quando l’utente non interviene:
– Assegnando un altro valore alla stessa variabile
– Cancellando il valore della variabile con il comando clear
– Per cancellare tutte le variabili presenti nella sessione si può usare il comando clear all
» a = 4;» a
a =
4
Il “;” alla fine del comando evita la stampa su video del risultato
dell’operazione
» clear a»
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Creazione matrici e/o vettori: Sintassi
• Per Matlab® lo scalare è un caso particolare di matrice di dimensioni (1x1)
• Analogamente il vettore è una matrice di una sola riga (o colonna)
• Esempio:
• Crea un vettore riga di 4 elementi (0,1,2,3)
• In modo equivalente è possibile creare un vettore colonna. Esempio:
8
» x=[0;1;2;3];»
» x=[0,1,2,3];»
Le matrici sono racchiuse dai caratteri
“ [ “ e “ ] ”
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 5
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Creazione matrici e/o vettori: Sintassi
• Importante:
• Matlab è case-sensitive!!
9
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Matrici e vettori: Sintassi
• Riassumendo:
– Le righe sono separate dal carattere punto e virgola “;”
– Gli elementi di una riga sono separati dalla virgola (o, equivalentemente, dallo spazio)
• Esempio:
• E’ chiaro che le matrici introdotte devono essere sintatticamente corrette.
10
>> A = [1,2,3;4,5,6] A = 1 2 3 4 5 6
>> A = [1,2,3;4,5] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 6
Analisi dei Processi Chimici e Biotecnologici- Matlab®
11
Creazione vettori: Casi particolari
• La seguente istruzione crea un vettore riga le cui componenti aumentano aritmeticamente:
• Le componenti possono anche cambiare con passi non unitari.
>> t=[1:5] t = 1 2 3 4 5 >>
>> x = [1:3:11]
x =
1 4 7 10
Analisi dei Processi Chimici e Biotecnologici- Matlab®
12
Manipolazioni di matrici
• Gli oggetti matriciali possono essere maneggiati in modo abbastanza semplice.
• È possibile estrarre elementi da una matrice e/o un vettore.
>> A = [4,6,3];>> A(2)
ans =
6
>> B=[1,2,3;4,5,6]; >> B(2,2) ans = 5
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 7
Analisi dei Processi Chimici e Biotecnologici- Matlab®
13
Manipolazioni di matrici
• È possibile anche estrarre più elementi da una matrice
• Con questa scrittura estraggo gli elementi della matrice che vanno:
– dalla prima alla seconda riga
– dalla seconda alla terza colonna
• Il nuovo oggetto è una matrice (2×2)
>> B = [1,2,3;4,5,6;7,8,9];
>> B(1:2,2:3)
ans =
2 3
5 6
Analisi dei Processi Chimici e Biotecnologici- Matlab®
14
Manipolazioni di matrici
• Per estrarre tutte le righe e/o le colonne di una matrice si usa il simbolo “:” da solo
• Esempi:
>> B(:,1)
ans =
1
4
7
Estrae le prima colonna (1) della matrice con tutte le
righe
>> B(2,:)
ans =
4 5 6
Estrae le seconda riga (2) della matrice con tutte le
colonne
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 8
Analisi dei Processi Chimici e Biotecnologici- Matlab®
15
Manipolazioni di matrici
• È possibile cambiare valore ai singoli elementi di una matrice:
>> B(2,2) = 10
B =
1 2 3
4 10 6
Analisi dei Processi Chimici e Biotecnologici- Matlab®
16
Manipolazioni di matrici
• È possibile anche creare unioni di matrici e vettori
• Da notare che l’uso del separatore “;” al posto di “,” porta alla scrittura di un altro oggetto
>> C =[4,5,6];>> [A,C]
ans =
4 6 3 4 5 6
>> [A;C]
ans =
4 6 34 5 6
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 9
Analisi dei Processi Chimici e Biotecnologici- Matlab®
17
Manipolazioni di matrici
• Riassumendo, il separatore “,” aggiunge delle colonne a sinistra delle preesistenti, il separatore “;” aggiunge delle righe al di sotto.
• Ovviamente, le espressioni devono essere sintatticamente corrette.
>> C=[2,3]; >> [A;C] ??? Error using ==> vertcat All rows in the bracketed expression must have the same number of columns.
Analisi dei Processi Chimici e Biotecnologici- Matlab®
18
• Matlab è in grado di riconoscere le espressioni basilari matematiche
>> pi (pi greco)
>> i (unità immaginaria, può anche essere usato j)
>> e=exp(1) (numero di Nepero)
• Un numero complesso può essere facilmente rappresentato:
>> 1+0.3*i ans = 1.0000 + 0.3000i
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 10
Analisi dei Processi Chimici e Biotecnologici- Matlab®
19
• Matlab è in grado di gestire una infinità di funzioni predefinite.
• Alcuni esempi:
– >> sqrt(2)
– >> log(2)
– >> sin(pi)
– >> cos(pi)
– etc. etc.
» sin(pi)
ans =
1.2246e-016
»
Come mai non è esattamente uguale a 0 ?
Analisi dei Processi Chimici e Biotecnologici- Matlab®
20
• Per ogni dubbio ed ignoranza, Matlab è dotato di un aiuto in linea molto utile per qualunque perplessità e consente di imparare il software in modo interattivo e veloce.
• help comando
– Visualizza la sintassi e lo scopo del comando richiamato
• lookfor oggetto
– Ricerca, in tutti i comandi predefiniti di Matlab, quelli in cui compare l’oggetto richiamato
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 11
Analisi dei Processi Chimici e Biotecnologici- Matlab®
21
• Esempio:
>> help pipi 3.1415926535897....
pi = 4*atan(1) = imag(log(-1)) = 3.1415926535897....
Reference page for pi
>>
Analisi dei Processi Chimici e Biotecnologici- Matlab®
22
• Analogamente per lookfor:
• lookfor consente la ricerca di tutti i comandi che contemplano la presenza dell’oggetto che cerchiamo
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 12
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Altra possibilità per ottenere informazioni sui comandi e le funzionalità di Matlab®:
23
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Alcuni siti con tutorials di Matlab®
• Sono riportati anche nella web-page del corso
• https://blog.udemy.com/matlab-tutorial/
• http://www.cyclismo.org/tutorial/matlab/
• Ma ve ne sono molti altri …
24
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 13
Analisi dei Processi Chimici e Biotecnologici- Matlab®
25
Operazioni elementari
• Matlab® consente di fare le operazioni elementari su scalari in modo semplice
>> 2+2 ans = 4 >> 3*5 ans = 15
>> 2-4 ans = -2 >> 4/3 ans = 1.3333
Analisi dei Processi Chimici e Biotecnologici- Matlab®
26
Operazioni elementari con Matrici• Le operazioni possono essere estese in modo immediato
ai vettori.
• Esercizio:
• Si creino tre matrici:
• Verificare quali delle seguenti operazioni sono corrette e quali no:
• A+B, A+C, A*C, C*A
• Il prodotto applicato alle matrici è il prodotto riga per colonna.
987
654
321
33A
333
222
111
33B
65
43
21
23C
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 14
Analisi dei Processi Chimici e Biotecnologici- Matlab®
27
Operazioni elementari con Matrici
• Oltre alle operazioni introdotte Matlab è provvisto anche di operazioni sui singoli elementi di matrici e o vettori.
• Questo tipo di operazioni si ottiene aggiungendo un “.”prima del segno di operazione desiderato.
• Esempio: per moltiplicare tra di essi i singoli elementi di due vettori delle stesse dimensioni:
>> A = [1,2,3];
>> B = [1,2,3];
• Siamo interessati al vettore C prodotto dell’i-esimo elemento di A con l’i-esimo elemento di B
Analisi dei Processi Chimici e Biotecnologici- Matlab®
28
Operazioni elementari con Matrici
• La sintassi corretta è:
• Analogamente:
» A.*B
ans =
1 4 9
» A./B
ans =
1 1 1
Da notare il punto prima del simbolo di
operazione
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 15
Analisi dei Processi Chimici e Biotecnologici- Matlab®
29
Trasposta di una matrice
• L’apice “ ‘ ” crea la trasposta di un oggetto
• Nel caso che la matrice sia immaginaria, l’operazione restituisce la trasposta coniugata
• Nel caso si fosse interessati alla trasposta semplice, l’operatore da usare è: “ .’ ”
>> A=[1,2;3,4] A = 1 2 3 4 >> A' ans = 1 3 2 4 >>
Analisi dei Processi Chimici e Biotecnologici- Matlab®
30
Esercizi
• Sia dato il seguente vettore:
x = [2 5 1 6]
1. Definire un vettore y1 in cui si aggiunge 2 ad ogni elemento di x
2. Definire un vettore y2 i cui elementi sono le radici quadrate degli elementi di x
3. Definire un vettore y3 i cui elementi sono le potenze cubiche degli elementi di x
4. Definire un vettore y4 i cui elementi in posizione dispari sono i valori di x aumentati di 3
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 16
Analisi dei Processi Chimici e Biotecnologici- Matlab®
31
Miscellanea – Creazione matrici particolari
• zeros(m,n) crea una matrice mxn di zeri
• ones(m,n) crea una matrice mxn di valori unitari
• eye(n) crea una matrice identità di dimensioni nxn
• diag(v) (dove v è un vettore di dimensioni n) crea una matrice diagonale di dimensione (nxn) i cui elementi sulla diagonale sono le componenti del vettore v
Analisi dei Processi Chimici e Biotecnologici- Matlab®
32
Esempio di applicazione: Risoluzione equazioni lineari
• È possibile risolvere sistemi di equazioni lineari in modo semplice con l’introduzione di un nuovo operatore divisione: “\”
• Esempio:
• Si consideri il sistema di equazioni lineari:
• Può essere scritto in forma matriciale:
1 2 3
1 2 3
1 2 3
2 0
3 4 1
2
x x x
x x x
x x x
bxA
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 17
Analisi dei Processi Chimici e Biotecnologici- Matlab®
33
Esempio di applicazione: Risoluzione equazioni lineari
• Dove:
• Per determinare i valori di x, si effettua l’operazione:
>> A=[sqrt(2),pi,1;1,sqrt(3),4;1,pi,pi];>> b=[0;-1;2];>>
Da notare che il vettore bè un vettore colonna
Nota: l’operazione x=A\b
è ben diversa dall’operazione x=inv(A)*b
I risultati sono gli stessi, ma la procedura è differente
>> x = A\b
x =
-4.75662.13680.0139
>>
Analisi dei Processi Chimici e Biotecnologici- Matlab®
34
Creazione vettori: Casi particolari
• Comando per creare vettori con termini equispaziati:
– linspace
• Per creare vettori che siano equispaziati in scala logaritmica:
– logspace
>> linspace(0,4,3) ans = 0 2 4 >>
>> logspace(0,4,3) ans = 1 100 10000
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 18
Analisi dei Processi Chimici e Biotecnologici- Matlab®
35
Funzioni vettorizzate e operatori
• La costruzione di questi vettori è abbastanza utile per la rappresentazione grafica di funzione
• Le funzioni in Matlab devono essere vettorizzate
• Ovvero, il diagramma della funzione f(x) è effettuatorappresentando graficamente i vettori (x,f(x)), in cui ilvettore f(x) è ottenuto applicando la funzione f alvettore x
• Esempio:
>> x=[0:0.1:2*pi];
>> y=sin(x);
>> plot(x,y)
Analisi dei Processi Chimici e Biotecnologici- Matlab®
36
Funzioni vettorizzate e operatori
• Per creare valori di funzioni non predefinite in Matlab, è possibile usare le operazioni aritmetiche tradizionali, ma con la accortezza che gli operatori siano preceduti dal punto “.”
• Esempio:
>> x = [-5:.1:5];
>> y = x./(1+x.^2);
>> plot(x,y)
21 x
xy
Da notare il punto prima degli operatori
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 19
Analisi dei Processi Chimici e Biotecnologici- Matlab®
37
Rappresentazioni grafiche
• Matlab® consente rappresentazioni grafiche in scale diverse da quella lineare:
• Usa scale logaritmiche (in base 10) sia sulla ascissa che sulle ordinate
• Usa scale logaritmiche (in base 10) rispettivamente lungo le ascisse e lungo le ordinate
>> loglog(x,y);
>> semilogx(x,y);
>> semilogy(x,y);
Analisi dei Processi Chimici e Biotecnologici- Matlab®
38
Esercizi
• Rappresentare graficamente le seguenti funzioni, in scala lineare e in scale logaritmiche:
– y = x2
– y = 1./exp(x+1)
• Nell’intervallo x [0 4].
• Scegliere una griglia di valori che garantisca una rappresentazione grafica adeguata.
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 20
Analisi dei Processi Chimici e Biotecnologici- Matlab®
39
Esercizio
• Ripetere l’esercizio di prima (solo in scala lineare) per la funzione:
• Nell’intervallo x [-4 4].
• Stabilire (qualitativamente) quando la funzione è significativamente diversa da 0.
21 1exp
22y x
Analisi dei Processi Chimici e Biotecnologici- Matlab®
40
Miscellanea – Funzioni utili
• max(x) restituisce il valore massimo di x, se x è un vettore. Nel caso in cui x sia una matrice, restituisce un vettore riga contenente il massimo elementi di ciascuna colonna,
• min(x) restituisce il valore minimo di x, se x è un vettore. Analogo a max nel caso di matrici.
• abs(x) restituisce un vettore, delle stesse dimensioni di x, i cui termini sono i moduli delle singole componenti di x
• size(A) restituisce le dimensioni di A
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 21
Analisi dei Processi Chimici e Biotecnologici- Matlab®
41
Miscellanea – Istruzioni utili
• save fname salva tutte le variabili nel file chiamato fname.mat (file binario)
• save fname y salva la variabile y (possono anche essere più di una) nel file chiamato fname.mat (file binario)
• save fname y –ascii salva la variabile y in formato testo (ascii) nel file chiamato fname. Molto utile nel caso si vogliano utilizzare i risultati di Matlab® con altri programmi, che non sono in grado di leggere il formato binario di Matlab®
• save fname y –ascii –tabs aggiunge un carattere tabulazione per separare gli elementi delle colonne di y.
Analisi dei Processi Chimici e Biotecnologici- Matlab®
42
Miscellanea – Istruzioni utili
• load fname carica tutte le variabili dal file chiamato fname.mat
• load fname –ascii carica la matrice definita in codice ascii nel file fname. Il nome della matrice nella sessione di Matlab® sarà fname.
• exit (o quit) esce dal programma
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 22
Analisi dei Processi Chimici e Biotecnologici- Matlab®
43
Miscellanea – Gestione cartelle
• Con la procedura descritta nei precedenti lucidi, le variabili verranno salvate nella cartella:
• C:\Users\NOME_UTENTE\Documents\MATLAB
• Però, è spesso necessario richiamare variabili e programmi (la creazione di programmi sarà esposta nella successiva sezione) salvate in altre cartelle.
Analisi dei Processi Chimici e Biotecnologici- Matlab®
44
Miscellanea – Gestione cartelle
• Cambiamento cartella di lavoro nella sessione di MatLab®
• Esempio: si vogliono caricare e/o salvare dati con Matlab® lavorando nella cartella C:\AnPro
• Questa fase può essere completata in due differenti modi
• Scrivere nella finestra principale di MatLab®
>> cd C:\AnPro
• Oppure …
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 23
Analisi dei Processi Chimici e Biotecnologici- Matlab®
45
Miscellanea – Gestione cartelle
Analisi dei Processi Chimici e Biotecnologici- Matlab®
46
Miscellanea – Gestione cartelle
• Cercare nella nuova finestra aperta la cartella C:\ApEse
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 24
Analisi dei Processi Chimici e Biotecnologici- Matlab®
47
Miscellanea – Gestione cartelle
• È possibile vedere dalla finestra principale di Matlab® i file che sono contenuti nella cartella con il comando:
>> dir
• O alternativamente:
>> ls
• È possibile anche visualizzare il percorso della cartella in cui si sta lavorando:
>>pwd
Analisi dei Processi Chimici e Biotecnologici- Matlab®
48
Miscellanea – Gestione cartelle
•Importante!!
•Non è possibile caricare file (o programmi) che non siano nel direttorio corrente in cui sta lavorando Matlab®
>> cd E:\AnPro
>> save tempor
>> cd E:\
>> load tempor
??? Error using ==> load
Unable to read file tempor: file does not exist.
>>
Analisi dei Processi Chimici e Biotecnologici -Definizioni preliminari Matlab Lez 1 25
Analisi dei Processi Chimici e Biotecnologici- Matlab®
Miscellanea – Gestione cartelle
• Suggerimento per il corso
• Lavorare sempre nella stessa cartella ovvero:
– È consigliabile che i file su cui si lavora (sia quelli scaricati dal sito, dati e programmi, sia quelli creati dagli utenti) siano tutti collocati in una sola cartella
– Non creare sottocartelle
49