strumenti per il calcolo numerico...
TRANSCRIPT
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Strumenti per il calcolo numerico MatlabOctave
Marco D Santambrogio ndash marcosantambrogiopolimiitVer13 aggiornata13 al13 2413 Agosto13 201513
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Obiettivi
bull Benvenuti nel fantastico mondo di MatlabOctave
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matlab
bull Cosrsquoegrave Matlabbull strumento (e corrispondente linguaggio) per elaborazioni
di calcolo numericobull NB sta per MATrix LABoratory
raquo centrato sulle matrici (ma include generiche funzionalitagrave matematiche)
bull usato nei successivi corsi di calcolo numericobull MATLAB egrave uno strumento commerciale
sect distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
sect Esiste un altro strumento di nome Octavebull identico nella concezione molto simile per gli aspetti
operativibull disponibile gratuitamente vedi
wwwgnuorgsoftwareoctave
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (1)
bull Linguaggio di alto livellosect simile a linguaggi di programmazione C Java Pascalsect possiede comandi sintetici per effettuare complesse
elaborazioni numerichebull Linguaggio interpretato comandi e istruzioni
bull NON tradotti in codice eseguibile dallrsquohardwarebull MA manipolati da un programma (lrsquointerprete) che li
analizza ed esegue azioni da essi descrittebull Linguaggio dinamico
sect NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simbolisect il tipo delle variabili egrave dinamico
bull a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (2)
bull In MatlabOctave tutto egrave un arraysect ci sono casi particolari significativi di
arraybull array 1x1 sono gli scalaribull array con una sola riga o colonna sono i
vettori bull array con due dimensioni sono le matricibull array con gt2 dimensioni matrici
multidimensionali
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Obiettivi
bull Benvenuti nel fantastico mondo di MatlabOctave
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matlab
bull Cosrsquoegrave Matlabbull strumento (e corrispondente linguaggio) per elaborazioni
di calcolo numericobull NB sta per MATrix LABoratory
raquo centrato sulle matrici (ma include generiche funzionalitagrave matematiche)
bull usato nei successivi corsi di calcolo numericobull MATLAB egrave uno strumento commerciale
sect distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
sect Esiste un altro strumento di nome Octavebull identico nella concezione molto simile per gli aspetti
operativibull disponibile gratuitamente vedi
wwwgnuorgsoftwareoctave
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (1)
bull Linguaggio di alto livellosect simile a linguaggi di programmazione C Java Pascalsect possiede comandi sintetici per effettuare complesse
elaborazioni numerichebull Linguaggio interpretato comandi e istruzioni
bull NON tradotti in codice eseguibile dallrsquohardwarebull MA manipolati da un programma (lrsquointerprete) che li
analizza ed esegue azioni da essi descrittebull Linguaggio dinamico
sect NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simbolisect il tipo delle variabili egrave dinamico
bull a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (2)
bull In MatlabOctave tutto egrave un arraysect ci sono casi particolari significativi di
arraybull array 1x1 sono gli scalaribull array con una sola riga o colonna sono i
vettori bull array con due dimensioni sono le matricibull array con gt2 dimensioni matrici
multidimensionali
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matlab
bull Cosrsquoegrave Matlabbull strumento (e corrispondente linguaggio) per elaborazioni
di calcolo numericobull NB sta per MATrix LABoratory
raquo centrato sulle matrici (ma include generiche funzionalitagrave matematiche)
bull usato nei successivi corsi di calcolo numericobull MATLAB egrave uno strumento commerciale
sect distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
sect Esiste un altro strumento di nome Octavebull identico nella concezione molto simile per gli aspetti
operativibull disponibile gratuitamente vedi
wwwgnuorgsoftwareoctave
3
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (1)
bull Linguaggio di alto livellosect simile a linguaggi di programmazione C Java Pascalsect possiede comandi sintetici per effettuare complesse
elaborazioni numerichebull Linguaggio interpretato comandi e istruzioni
bull NON tradotti in codice eseguibile dallrsquohardwarebull MA manipolati da un programma (lrsquointerprete) che li
analizza ed esegue azioni da essi descrittebull Linguaggio dinamico
sect NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simbolisect il tipo delle variabili egrave dinamico
bull a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (2)
bull In MatlabOctave tutto egrave un arraysect ci sono casi particolari significativi di
arraybull array 1x1 sono gli scalaribull array con una sola riga o colonna sono i
vettori bull array con due dimensioni sono le matricibull array con gt2 dimensioni matrici
multidimensionali
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (1)
bull Linguaggio di alto livellosect simile a linguaggi di programmazione C Java Pascalsect possiede comandi sintetici per effettuare complesse
elaborazioni numerichebull Linguaggio interpretato comandi e istruzioni
bull NON tradotti in codice eseguibile dallrsquohardwarebull MA manipolati da un programma (lrsquointerprete) che li
analizza ed esegue azioni da essi descrittebull Linguaggio dinamico
sect NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simbolisect il tipo delle variabili egrave dinamico
bull a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)
4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (2)
bull In MatlabOctave tutto egrave un arraysect ci sono casi particolari significativi di
arraybull array 1x1 sono gli scalaribull array con una sola riga o colonna sono i
vettori bull array con due dimensioni sono le matricibull array con gt2 dimensioni matrici
multidimensionali
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di MatlabOctave (2)
bull In MatlabOctave tutto egrave un arraysect ci sono casi particolari significativi di
arraybull array 1x1 sono gli scalaribull array con una sola riga o colonna sono i
vettori bull array con due dimensioni sono le matricibull array con gt2 dimensioni matrici
multidimensionali
5
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Per macchine PoliMI
httpsvirtualdesktoppolimiit
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 7 -
Screenshot interfaccia MATLAB
- 7 -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellrsquointerfaccia OCTAVE
Linea di comando dellrsquointerprete
8
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di Octave
9
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect es gtgt a = 10sect Assegna alla variabile a il valore 10
bull Esempio di alcuni comandisect help richiama la guida in lineasect diary puograve essere utilizzato per salvare la
sessione di lavorosect who whos e workspace mostrano lrsquoelenco
delle variabili definitesect save permette di salvare in un file le variabili
definite Load le ricaricasect clear cancella tutte le variabili
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiInput Output Commento
12346 ans = 20567 calcolo di un valore scalare
a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346
eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri
25 ans = 040000 divisione ldquodestrardquo
50 ans = Inf divisione per zero
5^2 ans = 25 potenza
real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso
1+1==2 1+1~=2
ans = 1 ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 12 -
Esempi con gli arraya=[1 2 3 4] a =
1 2 3 4
a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)
a a = 1 2 3 4
restituisce il valore della variabile a
x = [ - 1 3 s q r t ( 3 ) (1+2)5]
x = -130000 173205 060000
elementi possono essere espressioni
x(5)=abs(x(1)) x = -130000 173205 060000 000000
130000
Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli
b=arsquo b = 1 3 2 4
matrice trasposta (scambiate righe e colonne)
c=a+b c = 2 5 5 8
somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)
x=[-1 0 2] y=x y = -1 0 2
il ldquordquo blocca lrsquooutput ma non impedisce la valutazione
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli array
a = [] a = []
array vuoto convenzionalmente rappresenta valore nullo
x=15 x = 1 2 3 4 5
operatore ldquordquo per produrre vettori di numeri
y=0pi4pi y = 000000 078540
157080 235619 314159
o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)
v=10-4-3 v = 10 6 2 -2
valori negativi del passo e degli estremi
sin(y) ans = 000000 070711
100000 070711 000000
funzioni predefinite si applicano ai vettori
x=[0pi100pi2] [x sin(x)]
ans = 000000 000000 003142 003141 153938 099951 157080 100000
produce la tabella di sin(x) 0lexleπ2
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due dimensionibull Diagramma = insieme di coppie che rappresentano coordinate
di puntibull Si usano vettori per contenere sequenze ordinate dei valori di
ognuna delle coordinatebull plot(xy) disegna digramma cartesiano dei punti che hanno
sect valori delle ascisse in x delle ordinate in y sect e li congiunge con una linea per dare continuitagrave al grafico
bull funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo
gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordinate
cubica
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagramma in GUI-Octave
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematica
bull Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta
bull Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare la
provenienza dalla direzione opposta)
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Soluzione
t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con lrsquoesempio
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e lsquorsquo ndash Non come in C
bull Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio
bull Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect Maggiore velocitagrave di esecuzione
bull Regola di buona programmazionesect Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Commenti
bull Il simbolo di commento puograve essere messo in qualsiasi punto della linea
bull MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo
bull Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =
5
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabili
bull Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull Una variabile in MATLAB egrave una regione di memoria
che contiene un arraybull Ha un nome definito dallrsquoutente
sect Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
sect Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
sect Le variabili vengono create assegnando ad esse dei valori
sect Il loro tipo egrave determinato dal tipo dei valori assegnati
gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes
x 1x3 24 double
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo char
bull Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect Es commento = lsquoquesta e` una stringarsquo
sect (NB stringhe racchiuse tra apici singoli)sect whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellip
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota ldquoitalianardquo
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo double
bull Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione
bull Questi numeri possono esseresect Reali es var1 = -107sect Immaginari es var2 = 4i var3 = 4jsect Complessi es var3 = 103 + 10i
bull Es x = [-13 31+53j 0]bull Le parti reali e immaginarie possono
essere positive e negative nellrsquointervallo di valori [10-308 10308]
25
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una variabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazionesect Assegnamentosect Lettura dati da tastierasect Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento
bull variabile = espressionebull Esempi
sect a = [0 7+1]sect b = [a(2) 5 a]
bull Risultatosect a = [0 8]sect b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellipsect Ricordiamo pippo(2) egrave il secondo
elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect Ricordiamo le variabili sono create al
momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi ldquounendordquo i ricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellipsect d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizionesect g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect x = 1210 x = [1 3 5 7 9]sect n = 13 n = [1 2 3]
sect m = [nrsquo nrsquo]
1 1 2 2 3 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne
della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione
v(end) m(end end)
ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice
31
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefinite
bull Esempisect a = zeros(2)
sect b = zeros(23)
sect c = [1 2 3 4]sect d = zeros(size(c))
0 0 0 0
0 0 0 0 0 0
0 0 0 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a vettori
Si denota un sottoinsieme di un array usando vettori per valori degli indici
gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt
primo quarto settimo elemento
226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento
dal terzo al terzrsquoultimo elemento
i valori di v usati come indice
33
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt
tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3
tutti gli elementi delle righe 1 3 e 5
notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice
uso della notazione dei sottoarray per individuare elementi oggetto di
assegnamento
34
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarray
35
Perchegrave temp(224 )hellipe non temp(24 )
Perchegrave temp(24 ) sono le righe 2 3 e 4
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare valori a un array
bull Esempiosect m(14 13) = 3
bull Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento
bull Esempio 2sect m(12 12) = 4
3 3 3 3 3 3 3 3 3 3 3 3
4 4 3 4 4 3 3 3 3 3 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull Un array vuoto [] assegnato a un elemento di un vettore non crea
un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull Un array vuoto [] non assegnabile a singoli elementi di matrici
(non si possono ldquocreare buchirdquo)bull Assegnabile a intere righe o colonne di matrici che vengono
cancellate (ricompattando la matrice)
gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4
gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazione
bull Matrici memorizzate sect per colonna colonna 1 poi colonna 2 3 etcsect ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando sect piugrave velocemente i primi indicisect piugrave lentamente quelli successivi
bull NB opposto a quanto avviene in C
1 2
3 4
5 6
1
3
5
2
4
6
38
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzatabull Si puograve accedere a un array a piugrave
dimensioni come se ne avesse una solabull Usando un unico indice si segue lrsquoordine
della memorizzazionebull Da NON usare nella programmazione
sect ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite
bull Matlab definisce un insieme di variabili predefinite (es pi)
bull Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect Attenzione Il valore di queste variabili puograve essere
modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
sect Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piugrave comuni
Variabile Scopo
pi contiene 15 cifre significative di π
i j contiene il valore i ( )
inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)
nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00
clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)
date contiene la data corrente sotto forma di stringa
eps epsilon la piugrave piccola differenza rappresentabile tra due numeri
ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili
1minus
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
sect Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico
a= b= a b=
sect Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 2 3 4
2 3 5 7
2 6 15 28
1 2 3 4
2 3 5 7
12 17 26 37 ( ) sum= k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioni
Funzione Scopo
ceil(x) approssima x allrsquointero immediatamente maggiore
floor(x) approssima x allrsquointero immediatamente minore
fix(x) approssima x allrsquointero piugrave vicino verso lo zero
max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne
min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne
mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x
mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0
round(x) approssima x allrsquointero piugrave vicino
rand(N) genera una matrice di NxN numeri casuali
44
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) applicate a vettori e matrici
gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt
gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt
con due risultati dagrave anche la posizione del minimo
(con un solo risultato) dagrave il valore del minimo
per una matrice dagrave vettore dei minimi nelle colonne
per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)
45
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli array
Operazione Sintassi Matlab
Commenti
Array addition a + b Array e matrix addition sono identiche
Array subtraction a ndash b Array e matrix subtraction sono identiche
Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi
Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)
46
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left division
bull Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3
bull puograve essere espresso come Ax=B con
A = B= x =
bull di conseguenza x = A-1B=inversa(A)b=AB
a11 a12 a13 a21 a22 a23 a31 a32 a33
b1 b2 b3
x1 x2 x3
47
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Credits
bull Fonti per lo studiosect Introduzione alla programmazione in
MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Creditssect Prof A Morzenti
48