Strumenti per il calcolo numerico...

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

Transcript of Strumenti per il calcolo numerico...

Page 1: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Strumenti per il calcolo numerico MatlabOctave

Marco D Santambrogio ndash marcosantambrogiopolimiitVer13 aggiornata13 al13 2413 Agosto13 201513

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Obiettivi

bull  Benvenuti nel fantastico mondo di MatlabOctave

2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matlab

bull  Cosrsquoegrave Matlabbull  strumento (e corrispondente linguaggio) per elaborazioni

di calcolo numericobull  NB sta per MATrix LABoratory

raquo  centrato sulle matrici (ma include generiche funzionalitagrave matematiche)

bull  usato nei successivi corsi di calcolo numericobull  MATLAB egrave uno strumento commerciale

sect  distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull  Student edition disponibile quando si egrave al Politecnico

sect  Esiste un altro strumento di nome Octavebull  identico nella concezione molto simile per gli aspetti

operativibull  disponibile gratuitamente vedi

wwwgnuorgsoftwareoctave

3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (1)

bull  Linguaggio di alto livellosect  simile a linguaggi di programmazione C Java Pascalsect  possiede comandi sintetici per effettuare complesse

elaborazioni numerichebull  Linguaggio interpretato comandi e istruzioni

bull  NON tradotti in codice eseguibile dallrsquohardwarebull  MA manipolati da un programma (lrsquointerprete) che li

analizza ed esegue azioni da essi descrittebull  Linguaggio dinamico

sect  NON occorre dichiarare le variabilibull  risultano definite dal punto in cui vengono introdotte

ndash  e vengono incluse in una struttura detta tabella dei simbolisect  il tipo delle variabili egrave dinamico

bull  a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)

4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (2)

bull  In MatlabOctave tutto egrave un arraysect  ci sono casi particolari significativi di

arraybull  array 1x1 sono gli scalaribull  array con una sola riga o colonna sono i

vettori bull  array con due dimensioni sono le matricibull  array con gt2 dimensioni matrici

multidimensionali

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 2: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Obiettivi

bull  Benvenuti nel fantastico mondo di MatlabOctave

2

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matlab

bull  Cosrsquoegrave Matlabbull  strumento (e corrispondente linguaggio) per elaborazioni

di calcolo numericobull  NB sta per MATrix LABoratory

raquo  centrato sulle matrici (ma include generiche funzionalitagrave matematiche)

bull  usato nei successivi corsi di calcolo numericobull  MATLAB egrave uno strumento commerciale

sect  distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull  Student edition disponibile quando si egrave al Politecnico

sect  Esiste un altro strumento di nome Octavebull  identico nella concezione molto simile per gli aspetti

operativibull  disponibile gratuitamente vedi

wwwgnuorgsoftwareoctave

3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (1)

bull  Linguaggio di alto livellosect  simile a linguaggi di programmazione C Java Pascalsect  possiede comandi sintetici per effettuare complesse

elaborazioni numerichebull  Linguaggio interpretato comandi e istruzioni

bull  NON tradotti in codice eseguibile dallrsquohardwarebull  MA manipolati da un programma (lrsquointerprete) che li

analizza ed esegue azioni da essi descrittebull  Linguaggio dinamico

sect  NON occorre dichiarare le variabilibull  risultano definite dal punto in cui vengono introdotte

ndash  e vengono incluse in una struttura detta tabella dei simbolisect  il tipo delle variabili egrave dinamico

bull  a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)

4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (2)

bull  In MatlabOctave tutto egrave un arraysect  ci sono casi particolari significativi di

arraybull  array 1x1 sono gli scalaribull  array con una sola riga o colonna sono i

vettori bull  array con due dimensioni sono le matricibull  array con gt2 dimensioni matrici

multidimensionali

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 3: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matlab

bull  Cosrsquoegrave Matlabbull  strumento (e corrispondente linguaggio) per elaborazioni

di calcolo numericobull  NB sta per MATrix LABoratory

raquo  centrato sulle matrici (ma include generiche funzionalitagrave matematiche)

bull  usato nei successivi corsi di calcolo numericobull  MATLAB egrave uno strumento commerciale

sect  distribuito su licenza NON gratuita da ldquoThe MathWorks Incrdquobull  Student edition disponibile quando si egrave al Politecnico

sect  Esiste un altro strumento di nome Octavebull  identico nella concezione molto simile per gli aspetti

operativibull  disponibile gratuitamente vedi

wwwgnuorgsoftwareoctave

3

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (1)

bull  Linguaggio di alto livellosect  simile a linguaggi di programmazione C Java Pascalsect  possiede comandi sintetici per effettuare complesse

elaborazioni numerichebull  Linguaggio interpretato comandi e istruzioni

bull  NON tradotti in codice eseguibile dallrsquohardwarebull  MA manipolati da un programma (lrsquointerprete) che li

analizza ed esegue azioni da essi descrittebull  Linguaggio dinamico

sect  NON occorre dichiarare le variabilibull  risultano definite dal punto in cui vengono introdotte

ndash  e vengono incluse in una struttura detta tabella dei simbolisect  il tipo delle variabili egrave dinamico

bull  a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)

4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (2)

bull  In MatlabOctave tutto egrave un arraysect  ci sono casi particolari significativi di

arraybull  array 1x1 sono gli scalaribull  array con una sola riga o colonna sono i

vettori bull  array con due dimensioni sono le matricibull  array con gt2 dimensioni matrici

multidimensionali

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 4: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (1)

bull  Linguaggio di alto livellosect  simile a linguaggi di programmazione C Java Pascalsect  possiede comandi sintetici per effettuare complesse

elaborazioni numerichebull  Linguaggio interpretato comandi e istruzioni

bull  NON tradotti in codice eseguibile dallrsquohardwarebull  MA manipolati da un programma (lrsquointerprete) che li

analizza ed esegue azioni da essi descrittebull  Linguaggio dinamico

sect  NON occorre dichiarare le variabilibull  risultano definite dal punto in cui vengono introdotte

ndash  e vengono incluse in una struttura detta tabella dei simbolisect  il tipo delle variabili egrave dinamico

bull  a una variabile si possono assegnare successivamente valori di tipo diverso (scalari stringhe vettori matrici)

4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (2)

bull  In MatlabOctave tutto egrave un arraysect  ci sono casi particolari significativi di

arraybull  array 1x1 sono gli scalaribull  array con una sola riga o colonna sono i

vettori bull  array con due dimensioni sono le matricibull  array con gt2 dimensioni matrici

multidimensionali

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 5: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Caratteristiche del linguaggio di MatlabOctave (2)

bull  In MatlabOctave tutto egrave un arraysect  ci sono casi particolari significativi di

arraybull  array 1x1 sono gli scalaribull  array con una sola riga o colonna sono i

vettori bull  array con due dimensioni sono le matricibull  array con gt2 dimensioni matrici

multidimensionali

5

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 6: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Per macchine PoliMI

httpsvirtualdesktoppolimiit

6

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 7: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 7 -

Screenshot interfaccia MATLAB

- 7 -

Contenuto della directory corrente

Storia dei comandi

Finestra dei comandi

Lancia i tool di MATLAB ed altrohellip

Mostra le variabili nel workspace

7

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 8: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Screenshot dellrsquointerfaccia OCTAVE

Linea di comando dellrsquointerprete

8

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 9: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

GUI di Octave

9

Finestra dei comandi

Contenuto della directory corrente

Storia dei comandi

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 10: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Comandi in Matlab

bull  Matlab accetta comandi che lrsquoutente scrive di seguito al ldquopromptrdquo gtgtsect  es gtgt a = 10sect  Assegna alla variabile a il valore 10

bull  Esempio di alcuni comandisect  help richiama la guida in lineasect  diary puograve essere utilizzato per salvare la

sessione di lavorosect  who whos e workspace mostrano lrsquoelenco

delle variabili definitesect  save permette di salvare in un file le variabili

definite Load le ricaricasect  clear cancella tutte le variabili

10

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 11: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

EsempiInput Output Commento

12346 ans = 20567 calcolo di un valore scalare

a=12346 a = 20567 assegnamento alla variabile a del risultato di 12346

eps eps = 22204e-16 variabile predefinita la piugrave piccola differenza rappresentabile tra due numeri

25 ans = 040000 divisione ldquodestrardquo

50 ans = Inf divisione per zero

5^2 ans = 25 potenza

real(4+5j) ans = 4 real egrave una funzione predefinita che restituisce la parte reale di un numero complesso

1+1==2 1+1~=2

ans = 1 ans = 0

1 = vero 0 = falso ldquo==rdquo uguale ldquo~=rdquo diverso (codice ASCII di lsquo~rsquo 126)

11

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 12: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

- 12 -

Esempi con gli arraya=[1 2 3 4] a =

1 2 3 4

a ora egrave una matrice 2x2 ldquordquo separa le righe virgola opzionalmente separa elementi (ma basta lo spazio)

a a = 1 2 3 4

restituisce il valore della variabile a

x = [ - 1 3 s q r t ( 3 ) (1+2)5]

x = -130000 173205 060000

elementi possono essere espressioni

x(5)=abs(x(1)) x = -130000 173205 060000 000000

130000

Notazione con () per accedere a elementi di una matrice abs valore assoluto NB vettore x esteso per includere nuovo elemento elementi non assegnati sono nulli

b=arsquo b = 1 3 2 4

matrice trasposta (scambiate righe e colonne)

c=a+b c = 2 5 5 8

somma di matrici elemento per elemento (sottrazione con ldquo-rdquo simile)

x=[-1 0 2] y=x y = -1 0 2

il ldquordquo blocca lrsquooutput ma non impedisce la valutazione

12

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 13: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre operazioni con gli array

a = [] a = []

array vuoto convenzionalmente rappresenta valore nullo

x=15 x = 1 2 3 4 5

operatore ldquordquo per produrre vettori di numeri

y=0pi4pi y = 000000 078540

157080 235619 314159

o p e r a t o re ldquo rdquo c o n p a s s o d i incremento e valori non interi (pi egrave pigreco)

v=10-4-3 v = 10 6 2 -2

valori negativi del passo e degli estremi

sin(y) ans = 000000 070711

100000 070711 000000

funzioni predefinite si applicano ai vettori

x=[0pi100pi2] [x sin(x)]

ans = 000000 000000 003142 003141 153938 099951 157080 100000

produce la tabella di sin(x) 0lexleπ2

13

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 14: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagrammi a due dimensionibull  Diagramma = insieme di coppie che rappresentano coordinate

di puntibull  Si usano vettori per contenere sequenze ordinate dei valori di

ognuna delle coordinatebull  plot(xy) disegna digramma cartesiano dei punti che hanno

sect  valori delle ascisse in x delle ordinate in y sect  e li congiunge con una linea per dare continuitagrave al grafico

bull  funzioni xlabel per visualizzare nome asse ascisse ylabel per ordinate title per il titolo

gtgt x = -100110gtgt y=x^3gtgt plot(xy)gtgt xlabel(ascisse)gtgt ylabel(ordinate)gtgt title(cubica)

-10 -8 -6 -4 -2 0 2 4 6 8 10-1000

-800

-600

-400

-200

0

200

400

600

800

1000

ascisse

ordinate

cubica

14

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 15: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Diagramma in GUI-Octave

15

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 16: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Un esempio di cinematica

bull  Due treni partono da due stazioni adiacenti che distano 15km viaggiando a velocitagrave di 50ms e 30ms in direzione opposta

bull  Costruire un grafico che mostra il loro movimento fino a quando il piugrave veloce raggiunge la destinazione sect  Il piugrave veloce impiega 1500050=300s

bull  DistanzaTreno1=50t bull  DistranzaTreno2=15000-30t (per mostrare la

provenienza dalla direzione opposta)

16

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 17: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Soluzione

t=01300 p1=50 t p2=15000 ndash 30 t plot(tp1) hold on adesso egrave possibile inserire nuove curve sul grafico plot(tp2) hold off

17

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 18: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Risultati ottenuti con lrsquoesempio

18

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 19: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Istruzioni e lsquorsquo ndash Non come in C

bull  Le istruzioni possono essere seguite da lsquorsquo ma non egrave obbligatorio

bull  Il lsquorsquo blocca la visualizzazione del valore delle variabili coinvolte nellrsquoistruzionesect  Maggiore velocitagrave di esecuzione

bull  Regola di buona programmazionesect  Inserire sempre il lsquorsquo a meno che non si

voglia ispezionare il valore di una variabile a scopo di debugging

19

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 20: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Commenti

bull  Il simbolo di commento puograve essere messo in qualsiasi punto della linea

bull  MATLAB ignoreragrave tutto quello che viene scritto alla destra del simbolo

bull  Per esempiogtgt This is a commentgtgtx = 2+3 So is thisx =

5

20

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 21: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array e variabili

bull  Lrsquounitagrave fondamentale di dati in MATLAB egrave lrsquoarraybull  Una variabile in MATLAB egrave una regione di memoria

che contiene un arraybull  Ha un nome definito dallrsquoutente

sect  Per i nomi valgono regole simili a quelle del Cbull  C egrave un linguaggio a tipizzazione forte

sect  Le variabili vanno dichiarate prima dellrsquousobull  MATLAB egrave un linguaggio a tipizzazione debole

sect  Le variabili vengono create assegnando ad esse dei valori

sect  Il loro tipo egrave determinato dal tipo dei valori assegnati

gtgt x = [1 2 3]gtgt whos xName Size Bytes Class Attributes

x 1x3 24 double

21

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 22: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo char

bull  Una variabile di tipo char contiene uno scalare o un array di valori a 16 bit (8 bit in Octave) ciascuno dei quali rappresenta un caratteresect  Es commento = lsquoquesta e` una stringarsquo

sect  (NB stringhe racchiuse tra apici singoli)sect  whos commentoName Size Bytes Class Attributescommento 1x21 42 char

Nome della variabile Array di 1x21 caratteri

22

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 23: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Alcuni esempihellip

23

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 24: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Una piccola nota ldquoitalianardquo

24

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 25: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tipo double

bull  Una variabile di tipo double contiene uno scalare o un array di numeri espressi in 64 bit con doppia precisione

bull  Questi numeri possono esseresect  Reali es var1 = -107sect  Immaginari es var2 = 4i var3 = 4jsect  Complessi es var3 = 103 + 10i

bull  Es x = [-13 31+53j 0]bull  Le parti reali e immaginarie possono

essere positive e negative nellrsquointervallo di valori [10-308 10308]

25

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 26: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Creazione e inizializzazione di una variabile

bull  Le variabili sono create al momento dellrsquoinizializzazione

bull  Modi di inizializzazionesect  Assegnamentosect  Lettura dati da tastierasect  Lettura da file

26

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 27: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento

bull  variabile = espressionebull  Esempi

sect  a = [0 7+1]sect  b = [a(2) 5 a]

bull  Risultatosect  a = [0 8]sect  b = [8 5 0 8]

secondo elemento di a

contenuto di a

27

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 28: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento NOTA

bull  Non tutti gli elementi devono essere specificati alla creazionehellipsect  Ricordiamo pippo(2) egrave il secondo

elemento di pipposect Cosa saragrave elemento_matrice_2D(63)sect  Ricordiamo le variabili sono create al

momento dellrsquoinizializzazione

28

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 29: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Quindi ldquounendordquo i ricordiamohellip

29

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 30: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Assegnamento (2)

bull  Lrsquoarray puograve essere esteso successivamente hellipsect  d = [2 5] d(4)=2 d = [2 5 0 2]

bull  Operatore di trasposizionesect  g = drsquo 2

5 0

2

bull  Creare un vettore enumerando i valori di un insieme uso dellrsquooperatore lsquorsquosect  x = 1210 x = [1 3 5 7 9]sect  n = 13 n = [1 2 3]

sect  m = [nrsquo nrsquo]

1 1 2  2 3  3

30

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 31: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Tabella delle funzioni predefiniteFunzione Significato zeros (n) Genera una matrice nxn di zeri zeros (mn) Genera una matrice mxn di zeri zeros (size(arr)) Genera una matrice di zeri della stessa dimensione di arr ones(n) Genera una matrice nxn di uno ones(mn) Genera una matrice mxn di uno ones(size(arr)) Genera una matrice di uno della stessa dimensione di arr eye(n) Genera la matrice identitagrave nxn eye(mn) Genera la matrice identitagrave mxn length(arr) Ritorna la dimensione piugrave lunga del vettore size(arr) Ritorna un vettore [r c] con il numero r di righe e c di colonne

della matrice se arr ha piugrave dimensioni ritorna array con numero elementi per ogni dimensione

v(end) m(end end)

ultimo elemento di vettore v ultimo elemento dellrsquoultima riga di matrice m la costante end come indice in un array denota il piugrave alto valore possibile dellrsquoindice

31

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 32: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Funzioni predefinite

bull  Esempisect  a = zeros(2)

sect  b = zeros(23)

sect  c = [1 2 3 4]sect  d = zeros(size(c))

0 0 0 0

0 0 0 0 0 0

0 0 0 0

32

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 33: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a vettori

Si denota un sottoinsieme di un array usando vettori per valori degli indici

gtgt v=[6 8 4 2 4 5 1 3] v = 6 8 4 2 4 5 1 3 gtgt v([1 4 7]) ans = 6 2 1 gtgt v(226) ans = 8 2 5 gtgt v(3end-2) ans = 4 2 4 5 gtgt v(v) ans = 5 3 2 8 2 4 6 4 gtgt

primo quarto settimo elemento

226 egrave il vettore [2 4 6] indica secondo quarto sesto elemento

dal terzo al terzrsquoultimo elemento

i valori di v usati come indice

33

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 34: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

sottoarray applicazione a matrici

m = 9 8 7 6 5 4 3 2 1 0 11 12 0 0 0 gtgt m([1 4] [2 3]) ans = 8 7 11 12 gtgt m(125 1end) ans = 9 8 7 3 2 1 0 0 0 gtgtgtgt m(125 ) ans = 9 8 7 3 2 1 0 0 0 gtgt m(224 ) = [-1 -2 -3 -4 -5 -6] gtgt m m = 9 8 7 -1 -2 -3 3 2 1 -4 -5 -6 0 0 0 gtgt

tutti gli elementi sulle righe 1 e 4 e sulle colonne 2 e 3

tutti gli elementi delle righe 1 3 e 5

notazione lsquorsquo abbreviata per 1end cioegrave tutti i valori di quellrsquoindice

uso della notazione dei sottoarray per individuare elementi oggetto di

assegnamento

34

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 35: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Nota sui sottoarray

35

Perchegrave temp(224 )hellipe non temp(24 )

Perchegrave temp(24 ) sono le righe 2 3 e 4

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 36: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso di uno scalare per assegnare valori a un array

bull  Esempiosect  m(14 13) = 3

bull  Il modo con cui uno scalare viene assegnato a un array dipende dalla forma dellrsquoarray che viene specificata a sinistra dellrsquoassegnamento

bull  Esempio 2sect  m(12 12) = 4

3 3 3 3 3 3 3 3 3 3 3 3

4 4 3 4 4 3 3 3 3 3 3 3

36

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 37: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Uso dellrsquoarray vuoto [] per cancellare elementi di un arraybull  Un array vuoto [] assegnato a un elemento di un vettore non crea

un lsquobucorsquo ma cancella un elemento e ricompatta il vettore bull  Un array vuoto [] non assegnabile a singoli elementi di matrici

(non si possono ldquocreare buchirdquo)bull  Assegnabile a intere righe o colonne di matrici che vengono

cancellate (ricompattando la matrice)

gtgt a=[1 2 3 4 5] gtgt length(a) ans = 5 gtgt a(3) ans = 3 gtgt a(3)=[] a = 1 2 4 5 gtgt a(3) ans = 4 gtgt length(a) ans = 4

gtgt m=magic(4) m = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 gtgt m(34)=[] Subscripted assignment dimension mismatch gtgt m(3)=[] m = 16 2 3 13 5 11 10 8 4 14 15 1 gtgt [rc]=size(m) r = 3 c = 4 gtgt m(2)=[] m = 16 3 13 5 10 8 4 15 1 gtgt [rc]=size(m) r = 3 c = 3

37

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 38: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array memorizzazione

bull  Matrici memorizzate sect  per colonna colonna 1 poi colonna 2 3 etcsect  ogni colonna memorizzata per indici di riga crescenti

bull  Array memorizzati in forma lineare nella RAM variando sect  piugrave velocemente i primi indicisect  piugrave lentamente quelli successivi

bull  NB opposto a quanto avviene in C

1 2

3 4

5 6

1

3

5

2

4

6

38

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 39: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Array forma linearizzatabull  Si puograve accedere a un array a piugrave

dimensioni come se ne avesse una solabull  Usando un unico indice si segue lrsquoordine

della memorizzazionebull  Da NON usare nella programmazione

sect  ma aiuta a capire certi costrutti

39

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 40: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite

bull  Matlab definisce un insieme di variabili predefinite (es pi)

bull  Queste variabili spesso rappresentano importanti costanti della matematica (pi egrave pigreco i e j sono sqrt(-1) )sect  Attenzione Il valore di queste variabili puograve essere

modificato per esempiobull  circ1=2pi10bull  pi = 3bull  circ2=2pi10

sect  Il valore di circ2 non saragrave piugrave la circonferenza di un cerchio

bull  E` fortemente sconsigliato modificare il valore di una variabile predefinita (rArr evitare di usare variabili i e j come contatori)

40

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 41: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Variabili predefinite piugrave comuni

Variabile Scopo

pi contiene 15 cifre significative di π

i j contiene il valore i ( )

inf (o Inf) rappresentazione dellrsquoinfinito (ottenuto di solito come risultato di una divisione per 0)

nan Not-A-Number egrave il risultato di una operazione matematica non definita es 00

clock contiene la data e lrsquoorario corrente E` un vettore di sei elementi (anno mese giorno ora minuti secondi)

date contiene la data corrente sotto forma di stringa

eps epsilon la piugrave piccola differenza rappresentabile tra due numeri

ans Variabile speciale usata per immagazzinare risultati non assegnati ad altre variabili

1minus

41

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 42: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni con scalari e array

bull  Operazioni per gli scalari + - ^ bull  Operazioni per gli array

sect  Array operation eseguita sugli elementi corrispondenti degli array coinvolti (devono avere lo stesso numero di righe e colonne) si indica aggiungendo un punto prima dellrsquooperatore aritmetico

a= b= a b=

sect  Matrix operation segue le regole dellrsquoalgebra lineare (esempio prodotto righe per colonne)

a= b= ab =

1 2 3 4

2 3 5 7

2 6 15 28

1 2 3 4

2 3 5 7

12 17 26 37 ( ) sum= k kjikij baba

Elevamento a potenza

42

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 43: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Cosa succede con il

43

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 44: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Altre funzioni

Funzione Scopo

ceil(x) approssima x allrsquointero immediatamente maggiore

floor(x) approssima x allrsquointero immediatamente minore

fix(x) approssima x allrsquointero piugrave vicino verso lo zero

max(x) se x egrave un vettore ritorna il valore massimo in x e opzionalmente la collocazione di questo valore in x se x egrave matrice ritorna il vettore dei massimi delle sue colonne

min(x) se x egrave un vettore ritorna il valore minimo nel vettore x e opzionalmente la collocazione di questo valore nel vettore se x egrave matrice ritorna il vettore dei minimi delle sue colonne

mean(x) se x egrave un vettore ritorna uno scalare uguale alla media dei valori di x se x egrave una matrice ritorna il vettore contentente le medie dei vettori colonna di x

mod(mn) mod(mn) egrave m - qn dove q = floor(m n) se n ~= 0

round(x) approssima x allrsquointero piugrave vicino

rand(N) genera una matrice di NxN numeri casuali

44

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 45: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

funzioni min (e anche max) applicate a vettori e matrici

gtgt a = [24 28 21 32 25 27 30 33 31 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 gtgt min(a) ans = 22 25 21 gtgt [x y]=min(a) x = 22 25 21 y = 4 2 1 gtgt

gtgt b = [4 7 2 6 5] b = 4 7 2 6 5 gtgt min(b) ans = 2 gtgt [x y]=min(b) x = 2 y = 3 gtgt

con due risultati dagrave anche la posizione del minimo

(con un solo risultato) dagrave il valore del minimo

per una matrice dagrave vettore dei minimi nelle colonne

per una matrice con due risultati dagrave due vettori dei valori minimi nelle colonne e della loro posizione (riga)

45

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 46: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Operazioni tipiche per gli array

Operazione Sintassi Matlab

Commenti

Array addition a + b Array e matrix addition sono identiche

Array subtraction a ndash b Array e matrix subtraction sono identiche

Array multiplication a b Ciascun elemento del risultato egrave pari al prodotto degli elementi corrispondenti nei due operandi

Matrix multiplication a b Prodotto di matrici Array right division a b risultato(ij)=a(ij)b(ij) Array left division a b risultato(ij)=b(ij)a(ij) Matrix right division a b ainversa(b) Matrix left division a b inversa(a)b Array exponentiation a ^ b risultato(ij)=a(ij)^b(ij)

46

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 47: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Matrix left division

bull  Serve per risolvere sistemi di equazioni linearia11x1+a12x2+a13x3=b1a21x1+a22x2+a23x3=b2a31x1+a32x2+a33x3=b3

bull  puograve essere espresso come Ax=B con

A = B= x =

bull  di conseguenza x = A-1B=inversa(A)b=AB

a11 a12 a13 a21 a22 a23 a31 a32 a33

b1 b2 b3

x1 x2 x3

47

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48

Page 48: Strumenti per il calcolo numerico Matlab/Octavehome.deib.polimi.it/.../infob/1516/doc/PDF/9a_InfoB_MATLABintro_V0.pdf · numerico Matlab/Octave Marco D. Santambrogio – marco.santambrogio@polimi.it

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE

Fonti per lo studio + Credits

bull  Fonti per lo studiosect  Introduzione alla programmazione in

MATLAB ACampi EDi Nitto DLoiacono AMorzenti PSpoletini EdEsculapiobull  Capitolo 1

bull  Creditssect  Prof A Morzenti

48