Upload
severo-villani
View
214
Download
2
Embed Size (px)
Citation preview
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Strumenti per il calcolo Strumenti per il calcolo numerico MatlabOctavenumerico MatlabOctave
Marco D Santambrogio ndash marcosantambrogiopolimiitVer aggiornata al 13 Agosto 2014
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
bull Benvenuti nel fantastico mondo di MatlabOctave
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MatlabMatlab
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
distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
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 Caratteristiche del linguaggio di MatlabOctave (1)MatlabOctave (1)
bull Linguaggio di alto livello simile a linguaggi di programmazione C Java Pascal 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
NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
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 Caratteristiche del linguaggio di MatlabOctave (2)MatlabOctave (2)
bull In MatlabOctave tutto egrave un array 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
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
ObiettiviObiettivi
bull Benvenuti nel fantastico mondo di MatlabOctave
2
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MatlabMatlab
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
distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
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 Caratteristiche del linguaggio di MatlabOctave (1)MatlabOctave (1)
bull Linguaggio di alto livello simile a linguaggi di programmazione C Java Pascal 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
NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
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 Caratteristiche del linguaggio di MatlabOctave (2)MatlabOctave (2)
bull In MatlabOctave tutto egrave un array 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
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
MatlabMatlab
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
distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull Student edition disponibile quando si egrave al Politecnico
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 Caratteristiche del linguaggio di MatlabOctave (1)MatlabOctave (1)
bull Linguaggio di alto livello simile a linguaggi di programmazione C Java Pascal 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
NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
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 Caratteristiche del linguaggio di MatlabOctave (2)MatlabOctave (2)
bull In MatlabOctave tutto egrave un array 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
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di Caratteristiche del linguaggio di MatlabOctave (1)MatlabOctave (1)
bull Linguaggio di alto livello simile a linguaggi di programmazione C Java Pascal 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
NON occorre dichiarare le variabilibull risultano definite dal punto in cui vengono introdotte
ndash e vengono incluse in una struttura detta tabella dei simboli
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 Caratteristiche del linguaggio di MatlabOctave (2)MatlabOctave (2)
bull In MatlabOctave tutto egrave un array 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
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Caratteristiche del linguaggio di Caratteristiche del linguaggio di MatlabOctave (2)MatlabOctave (2)
bull In MatlabOctave tutto egrave un array 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
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- 6 -
Screenshot interfaccia Screenshot interfaccia MATLABMATLAB
- - 66 - -
Contenuto della directory corrente
Storia dei comandi
Finestra dei comandi
Lancia i tool di MATLAB ed altrohellip
Mostra le variabili nel workspace
6
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Screenshot dellScreenshot dellrsquorsquointerfaccia interfaccia OCTAVEOCTAVE
Linea di comando dellrsquointerprete
7
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
GUI di OctaveGUI di Octave
8
Finestra dei comandi
Contenuto della directory corrente
Storia dei comandi
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Comandi in MatlabComandi in Matlab
bull Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgt es gtgt a = 10 Assegna alla variabile a il valore 10
bull Esempio di alcuni comandi help richiama la guida in linea diary puograve essere utilizzato per salvare la
sessione di lavoro who whos e workspace mostrano
lrsquoelenco delle variabili definite save permette di salvare in un file le
variabili definite Load le ricarica clear cancella tutte le variabili
9
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
EsempiEsempi
Input 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==21+1~=2
ans = 1
ans = 0
1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)
10
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
- - 1111 - -
Esempi con gli arrayEsempi 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=[-13 sqrt(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
11
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre operazioni con gli arrayAltre 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
operatore ldquordquo con passo di 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) 0x2
12
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagrammi a due Diagrammi a due dimensionidimensionibull 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
valori delle ascisse in x delle ordinate in y 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
-10 -8 -6 -4 -2 0 2 4 6 8 10-1000
-800
-600
-400
-200
0
200
400
600
800
1000
ascisse
ordi
nate
cubica
13
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Diagranna in GUI-OctaveDiagranna in GUI-Octave
14
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Un esempio di cinematicaUn 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 Il piugrave veloce impiega 1500050=300s
bull DistanzaTreno1=50t bull DistranzaTreno2=15000-30t (per mostrare
la provenienza dalla direzione opposta)
15
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
SoluzioneSoluzione
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
16
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Risultati ottenuti con Risultati ottenuti con ll rsquorsquoesempioesempio
17
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Istruzioni e Istruzioni e lsquolsquo rsquorsquo ndash ndash Non come in CNon 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 nellrsquoistruzione Maggiore velocitagrave di esecuzione
bull Regola di buona programmazione Inserire sempre il lsquorsquo a meno che non si
voglia ispezionare il valore di una variabile a scopo di debugging
18
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
CommentiCommenti
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
19
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array e variabiliArray 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
Per i nomi valgono regole simili a quelle del Cbull C egrave un linguaggio a tipizzazione forte
Le variabili vanno dichiarate prima dellrsquousobull MATLAB egrave un linguaggio a tipizzazione debole
Le variabili vengono create assegnando ad esse dei valori
Il loro tipo egrave determinato dal tipo dei valori assegnati
20
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo charTipo 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 carattere Es commento = lsquoquesta e` una stringarsquo
(NB stringhe racchiuse tra apici singoli) whos commentoName Size Bytes Class Attributescommento 1x21 42 char
Nome della variabile Array di 1x21 caratteri
21
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Alcuni esempihellipAlcuni esempihellip
22
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Una piccola nota Una piccola nota ldquoldquoitalianaitalianardquordquo
23
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Sulla codificahellipSulla codificahellip
24
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tipo doubleTipo 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 essere Reali es var1 = -107 Immaginari es var2 = 4i var3 = 4j 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 Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Creazione e inizializzazione di una Creazione e inizializzazione di una variabilevariabile
bull Le variabili sono create al momento dellrsquoinizializzazione
bull Modi di inizializzazione Assegnamento Lettura dati da tastiera Lettura da file
26
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento Assegnamento
bull variabile = espressionebull Esempi
a = [0 7+1] b = [a(2) 5 a]
bull Risultato a = [0 8] b = [8 5 0 8]
secondo elemento di a
contenuto di a
27
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento NOTAAssegnamento NOTA
bull Non tutti gli elementi devono essere specificati alla creazionehellip Ricordiamo pippo(2) egrave il secondo
elemento di pippo Cosa saragrave elemento_matrice_2D(63) Ricordiamo le variabili sono create
al momento dellrsquoinizializzazione
28
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Quindi Quindi ldquoldquounendounendordquordquo i i ricordiamohellipricordiamohellip
29
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Assegnamento (2)Assegnamento (2)
bull Lrsquoarray puograve essere esteso successivamente hellip d = [2 5] d(4)=2 d = [2 5 0 2]
bull Operatore di trasposizione g = drsquo 2
5 0
2
bull Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquo x = 1210 x = [1 3 5 7 9] n = 13 n = [1 2 3]
m = [nrsquo nrsquo]
1 12 23 3
30
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Tabella delle funzioni Tabella delle funzioni predefinitepredefinite
Funzione 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 predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Funzioni predefiniteFunzioni predefinite
bull Esempi a = zeros(2)
b = zeros(23)
c = [1 2 3 4] d = zeros(size(c))
0 00 0
0 0 00 0 0
0 00 0
32
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a sottoarray applicazione a vettorivettori
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 3gtgt 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 4gtgt
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 matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
sottoarray applicazione a matricisottoarray applicazione a matrici
m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0gtgt m([1 4] [2 3])ans = 8 7 11 12gtgt m(125 1end)ans = 9 8 7 3 2 1 0 0 0gtgtgtgt m(125 )ans = 9 8 7 3 2 1 0 0 0gtgt m(224 ) = [-1 -2 -3 -4 -5 -6]gtgt mm = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0gtgt
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 sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Nota sui sottoarrayNota 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 Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso di uno scalare per assegnare Uso di uno scalare per assegnare valori a un arrayvalori a un array
bull Esempio 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 2 m(12 12) = 4
3 3 33 3 33 3 33 3 3
4 4 34 4 33 3 33 3 3
36
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Uso dellUso dellrsquorsquoarray vuoto [] per cancellare array vuoto [] per cancellare elementi di un arrayelementi di un array
bull 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 = 5gtgt a(3)ans = 3gtgt a(3)=[]a = 1 2 4 5gtgt a(3)ans = 4gtgt length(a)ans = 4
gtgt m=magic(4)m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1gtgt m(34)=[] Subscripted assignment dimension mismatchgtgt m(3)=[]m = 16 2 3 13 5 11 10 8 4 14 15 1gtgt [rc]=size(m)r = 3c = 4gtgt m(2)=[]m = 16 3 13 5 10 8 4 15 1gtgt [rc]=size(m)r = 3c = 3
37
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array memorizzazioneArray memorizzazione
bull Matrici memorizzate per colonna colonna 1 poi colonna 2 3 etc ogni colonna memorizzata per indici di riga crescenti
bull Array memorizzati in forma lineare nella RAM variando piugrave velocemente i primi indici 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 linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Array forma linearizzataArray forma linearizzata
bull Si puograve accedere a un array a piugrave dimensioni come se ne avesse una sola
bull Usando un unico indice si segue lrsquoordine della memorizzazione
bull Da NON usare nella programmazione ma aiuta a capire certi costrutti
39
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefiniteVariabili 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) ) Attenzione Il valore di queste variabili puograve
essere modificato per esempiobull circ1=2pi10bull pi = 3bull circ2=2pi10
Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio
bull E` fortemente sconsigliato modificare il valore di una variabile predefinita ( evitare di usare variabili i e j come contatori)
40
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Variabili predefinite piVariabili predefinite piugraveugrave comunicomuni
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
1
41
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni con scalari e array Operazioni con scalari e array
bull Operazioni per gli scalari + - ^ bull Operazioni per gli array
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=
Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)
a= b= ab =
1 23 4
2 35 7
2 615 28
1 23 4
2 35 7
12 1726 37
k kjikij baba
Elevamento a potenza
42
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Cosa succede con il Cosa succede con il
43
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Altre funzioniAltre 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) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
funzioni min (e anche max) funzioni min (e anche max) applicate a vettori e matriciapplicate 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 26gtgt min(a)ans = 22 25 21
gtgt [x y]=min(a)x = 22 25 21y = 4 2 1gtgt
gtgt b = [4 7 2 6 5]b = 4 7 2 6 5gtgt min(b)ans = 2gtgt [x y]=min(b)x = 2y = 3gtgt
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 Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Operazioni tipiche per gli Operazioni tipiche per gli arrayarray
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 divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Matrix left divisionMatrix 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 + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE
Fonti per lo studio + Fonti per lo studio + CreditsCreditsbull Fonti per lo studio
Introduzione alla programmazione in MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull Capitolo 1
bull Credits Prof A Morzenti
48