DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D....

48
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo Strumenti per il calcolo numerico Matlab/Octave numerico Matlab/Octave Marco D. Santambrogio – [email protected] Ver. aggiornata al 13 Agosto 2014

Transcript of DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D....

Page 1: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 2: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 3: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 4: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 5: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 6: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 7: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 8: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 9: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 10: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 11: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 12: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 13: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 14: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 15: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 16: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 17: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 18: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 19: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 20: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 21: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 22: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 23: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 24: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 25: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 26: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 27: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 28: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 29: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 30: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 31: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 32: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 33: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 34: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 35: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 36: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 37: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 38: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 39: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 40: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 41: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 42: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 43: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 44: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 45: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 46: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 47: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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

Page 48: DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Strumenti per il calcolo numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata.

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