Upload
truongtuong
View
220
Download
0
Embed Size (px)
Citation preview
Fondamenti di InformaticaMATLAB : Array e d I nt rod u z ion e a l le Matr ic i
P r o f. R a f f a e l e P i z zo l a n t e
A . A . 2 0 1 6 / 1 7
MATLAB: Array ed Introduzione alle MatriciOUTLINE
•Operazioni su Variabili
• Introduzione alle Matrici
•Array in MATLAB • Indici Array
•Operazioni su Array
MATLAB: Array ed Introduzione alle Matrici
Operazioni su Variabili – 1/2
>> x = 2.6; >> x = 2.2; >> x = 2.6;
>> round(x) >> ceil(x) >> floor(x)
ans = ans = ans =
3 3 2
>> x = 2.2;
>> round(x)
ans =
2
>> x = 1.5;
>> round(x)
ans =
2
Arrotondamento Arrotondamento per eccesso (Parte Intera Superiore)
Arrotondamento per difetto (Parte Intera Inferiore)
MATLAB: Array ed Introduzione alle Matrici
Operazioni su Variabili – 2/2• Voglio ottenere il valore assoluto di una variabile, ma non conosco il nome della funzione, cosa devo fare?
MATLAB: Array ed Introduzione alle Matrici
Operazioni su Variabili – 2/2• Voglio ottenere il valore assoluto di una variabile, ma non conosco il nome della funzione, cosa devo fare?• Usare il comando lookfor
• Usare il comando help
• Usare il comando helpbrowser
• Usare il comando doc
Valore assoluto di un numero
>> x = -2
>> abs(x)
ans =
2
MATLAB: Array ed Introduzione alle Matrici
Introduzione alle Matrici – 1/5• Come detto nelle scorse lezioni…
• Il nome MATLAB deriva da MATrix LABoratory
• Ogni cosa in MATLAB è rappresentata mediante matrici
• Anche le variabili viste finora sono un caso particolare di matrice, aventidimensione 1 × 1
MATLAB: Array ed Introduzione alle Matrici
Introduzione alle Matrici – 2/5• Una matrice (2-D) contiene elementi numerati per riga e per colonna, ad esempio mij denota l’elemento alla riga i e colonna j
MATLAB: Array ed Introduzione alle Matrici
Introduzione alle Matrici – 3/5• Ogni cosa in MATLAB è rappresentata mediante matrici!
• Se hanno una sola dimensione (1D)• Il loro aspetto intuitivo è quello di una lista o un array (vettore)
• Un array riga è una matrice 1 × n
• Un array colonna è una matrice n × 1
1 2 3 4
MATLAB: Array ed Introduzione alle Matrici
Introduzione alle Matrici – 4/5• Ogni cosa in MATLAB è rappresentata mediante matrici!
• Se hanno due dimensioni (2D)• Il loro aspetto intuitivo è quello di una rettangolo (o quadrato)
1 2 3 4
1 (1, 1) (1, 2) (1, 3) (1, 4)
2 (2, 1) (2, 2) (2, 3) (2, 4)
3 (3, 1) (3, 2) (3, 3) (3, 4)
4 (4, 1) (4, 2) (4, 3) (4, 4)
colonne
righ
e
MATLAB: Array ed Introduzione alle Matrici
Introduzione alle Matrici – 5/5• Ogni cosa in MATLAB è rappresentata mediante matrici!
• Se hanno tre dimensioni (3D)• Il loro aspetto intuitivo è quello di un parallelepipedo
MATLAB: Array ed Introduzione alle Matrici
(1, 1, 1) (1, 2, 1) (1, 3, 1) (1, 4, 1)
(2, 1, 1) (2, 2, 1) (2, 3, 1) (2, 4, 1)
(3, 1, 1) (3, 2, 1) (3, 3, 1) (3, 4, 1)
(4, 1, 1) (4, 2, 1) (4, 3, 1) (4, 4, 1)
colonne
righ
e
(1, 1, 3) (1, 2, 3) (1, 3, 3) (1, 4, 3)
(2, 1, 3) (2, 2, 3) (2, 3, 3) (2, 4, 3)
(3, 1, 3) (3, 2, 3) (3, 3, 3) (3, 4, 3)
(4, 1, 3) (4, 2, 3) (4, 3, 3) (4, 4, 3)
(1, 1, 2) (1, 2, 2) (1, 3, 2) (1, 4, 2)
(2, 1, 2) (2, 2, 2) (2, 3, 2) (2, 4, 2)
(3, 1, 2) (3, 2, 2) (3, 3, 2) (3, 4, 2)
(4, 1, 2) (4, 2, 2) (4, 3, 2) (4, 4, 2)
MATLAB: Array ed Introduzione alle Matrici
Array•Un array (o vettore) è una collezione indicizzata
di variabili (elementi) dello stesso tipo
• Esempio 1• Array di voti
• Esempio 2
24 18 25 22 23 30 20
0.025 0.002 0.425 0.790
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 1/7• Un array in MATLAB si crea scrivendo gli elementi che lo
compongono all’interno di una coppia di parentesiquadre• Gli elementi devono essere separati da una virgola o uno spazio
• Esempio 1• vet=[1,2,3,4,5]
• Array di nome vet composto da 5 elementi
• Esempio 2• vettore=[2 -1 -1]
• Array di nome vettore composto da 3 elementi
• Gli array qui mostrati vengono detti array riga• Elementi disposti in senso orizzontale
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 2/7• MATLAB permette anche di creare array colonna (elementi dispostiin senso verticale). Esistono due metodi per farlo
• MATLAB visualizza gli array riga orizzontalmente e gli array colonnaverticalmente
5
6
7
8
RISULTATO (array colonna):vet =
Metodo 2 (operatore di trasposizione ’)
vet=[5 6 7 8]’
Metodo 1 (separatore ;)vet=[5;6;7;8]
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 3/7• MATLAB permette di creare nuovi array partendo da array
preesistenti
• Esempiovet1=[1 2 3 4 5 6];
vet2=[7, 8, 9];
vet3=[vet1, vet2];
>> vet3 =
1 2 3 4 5 6 7 8 9
vet1 vet2
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 4/7• È possibile creare un array di elementiregolarmente intervallati
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 4/7• È possibile creare un array di elementiregolarmente intervallati
Esempio 1 [ 3 6 9 12 ]Esempio 2
[ 2 4 6 ]
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 4/7• È possibile creare un array di elementiregolarmente intervallati
• >> x = 10:1:15
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 4/7• È possibile creare un array di elementiregolarmente intervallati
• >> x = 10:1:15
• RISULTATO: x = [10 11 12 13 14 15]
Inizia da 10
Ad incrementi di 1 (con intervallo 1)
Si ferma quando arriva a 15
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 4/7• È possibile creare un array di elementiregolarmente intervallati
• >> x = 10:1:15 Equivalente a x=[10:1:15]
• RISULTATO: x = [10 11 12 13 14 15]
Inizia da 10
Ad incrementi di 1 (con intervallo 1)
Si ferma quando arriva a 15
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 5/7• Esempi• vet1=[0:2:8]
• RISULTATO: vet1=[0,2,4,6,8]
• vet1=[1:1:10]
• RISULTATO: vet1=[1,2,3,4,5,6,7,8,9,10]
• OSSERVAZIONE: Se l’incremento viene omesso, MATLAB lopone di default uguale a 1• Esempio
• 1:1:10 equivale a 1:10
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 6/7• linspace(x1, x2, n)
• Crea un array riga di elementi linearmente intervallati, indicando il numerodi valori invece dell’incremento (come visto precedentemente)
• Genera n elementi tra x1 ed x2
n elementi
x1 x2
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 6/7• Esempio 1• x=linspace(0, 9, 10)
• RISULTATO: x=[0 1 2 3 4 5 6 7 8 9]
• Esempio 2• x=linspace(0, 9, 3)
• RISULTATO: x=[0.00000 4.50000 9.00000]
0 1 92 43 5 6 7 8
0 4.5 9
10 elementi
3 elementi
NOTA: linspace(x1, x2) genera un array riga di 100 elementi, linearmente equidistanti tra x1 ed x2.Quindi, omettendo n, vengono generati 100 elementi
MATLAB: Array ed Introduzione alle Matrici
Creare un Array – 7/7• Creare un array riga composto da tutti zero
• Creare un array riga composto da tutti uno
• Creare un array riga composto da numeri pseudocasuali
>> x = zeros(1, 5)
x =
0 0 0 0 0
>> x = ones(1, 6)
x =
1 1 1 1 1 1
1 riga, 5 colonne
1 riga, 6 colonne
>> x = rand(1, 4)
x =
0.9501 0.2311 0.6068 0.4860
Genera numeri pseudocasuali
uniformemente distribuiti tra 0 e 1
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 1/6• Come accedere ad uno specifico elemento
dell’array?• Si utilizzano gli indici (a partire da 1)
24 18 25 22 23 30 20
1 2 3 4 5 6 7
Elementi:
Indici:
v
v(i) indica l’i-esimo elemento di v
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 2/6• Esempio 1• v=[4 8 5 32 16 4]
• v(2)
• Secondo elemento dell’array v RISULTATO: elemento con valore 8
• Esempio 2• v=[4 8 5 32 16 4]
• v(5)
• Quinto elemento dell’array v RISULTATO: elemento con valore 16
• È anche possibile assegnare ad una variabile il valore di un elemento dell’array
• y = v(5) v assumerà il valore di 16
4 8 5 32 16 4
4 8 5 32 16 4
4 8 5 32 16 4
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 3/6• Manipolare un array tramite indici
• Cancellare un elemento da un array
1. v = [54 19 20 12 15]
2. v(2) = []
3. v = [54 20 12 15]
54 19 20 12 15
54 19 20 12 15
54 20 12 15
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 4/6• Manipolare un array tramite indici• Modificare il valore di un elemento in un array
1. v = [11 23 8 56 5]
2. v(4) = 77
3. v = [11 23 8 77 5]
11 23 8 56 5
11 23 8 ---56--- 5
11 23 8 77 5
11 23 8 77 5
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 5/6• È possibile accedere a più di un elemento dell’array allavolta
>> x = 10 : -1 : 1
x =
10 9 8 7 6 5 4 3 2 1
>> y = x([3,9,4])
y =
8 2 7
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 5/6• È possibile accedere a più di un elemento dell’array allavolta
>> x = 10 : -1 : 1
x =
10 9 8 7 6 5 4 3 2 1
>> y = x([3,9,4])
y =
8 2 7
MATLAB: Array ed Introduzione alle Matrici
Array contenente indici
Indicizzare un Array – 5/6• È possibile accedere a più di un elemento dell’array allavolta
>> x = 10 : -1 : 1
x =
10 9 8 7 6 5 4 3 2 1
>> y = x([3,9,4])
y =
8 2 7
Indici3 4 9
Elementi
MATLAB: Array ed Introduzione alle Matrici
Array contenente indici
Indicizzare un Array – 6/6• È possibile accedere a più di un elemento dell’array allavolta
>> x = 10 : -1 : 1
x =
10 9 8 7 6 5 4 3 2 1
>> y = x(2 : 2 : 8)
y =
9 7 5 3
Indici2 2+2=4 6+2=8
Elementi
4+2=6
Indice iniziale
Incremento
Indice finale
MATLAB: Array ed Introduzione alle Matrici
Indicizzare un Array – 6/6• È possibile accedere a più di un elemento dell’array allavolta
>> x = 10 : -1 : 1
x =
10 9 8 7 6 5 4 3 2 1
>> y = x(2 : 2 : 8)
y =
9 7 5 3
Indici2 2+2=4 6+2=8
Elementi
4+2=6
Indice iniziale
Incremento
Indice finale
MATLAB: Array ed Introduzione alle Matrici
Array regolarmente intervallato
Indicizzare un Array – 6/6
• v(:) Identifica tutti gli elementi dell’array v
• v(2:5)
• Identifica tutti gli elementi di v il cui indice è compreso tra 2 e 5
• Elementi selezionati: v(2), v(3), v(4) e v(5)
• Esempio
• v = [ 10 18 9 6 3 15 22 ]
• v(3:6) RISULTATO: 9, 3, 6, 15
MATLAB: Array ed Introduzione alle Matrici
• È anche possibile cancellare più elementi dell’array
1. v = [54 19 20 12 15]
2. v(2:4) = []
3. v = [54 15]
Indicizzare un Array – 6/6
54 15
54 19 20 12 15
54 19 20 12 15
MATLAB: Array ed Introduzione alle Matrici
Nota: L’aggiunta di un elemento oltre il limite di un array non è
un errore!
Indicizzare un Array – 6/6
>> x = [7 8 9];
>> x(7) = 99;
x =
7 8 9 0 0 0 99
7 8 9 0 0 0 99
1 2 3 4 5 6 7
Limite array
Zeri
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 1/3• Tutte le operazioni che sono state applicate su variabili contenenti un solo elemento possono essere applicate agli array
>> c = 1 : 0.1 : 2
c = 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00
>> round(c)
ans = 1 1 1 1 1 2 2 2 2 2 2
>> ceil(c)
ans = 1 2 2 2 2 2 2 2 2 2 2
>> floor(c)
ans = 1 1 1 1 1 1 1 1 1 1 2
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 1/3• Tutte le operazioni che sono state applicate su variabili contenenti un solo elemento possono essere applicate agli array
>> b = [ -1 -2 -3 3 2 1 ]
b =
-1 -2 -3 3 2 1
>> d = abs(c)
d =
1 2 3 3 2 1
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 2/3Supponiamo di avere il seguente array x
>> x = 1 : 50;
• Trovare il valore massimo in un array>> max(x)
RISULTATO: 50
• Trovare il valore minimo in un array>> min(x)
RISULTATO: 1
• Trovare la media di un array>> mean(x)
RISULTATO: 25.500
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 3/3• Trovare la dimensione di un array
>> x = 1 : 50;
>> size(x)
ans =
1 50
>> y = x';
>> size(y)
ans =
50 1
>> max(size(x))
ans =
50
• Trovare la lunghezza di un array
>> x = 1 : 50;
>> length(x)
ans =
50
>> y = x';
>> length(y)
ans =
50
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 3/3• Trovare la dimensione di un array
>> x = 1 : 50;
>> size(x)
ans =
1 50
>> y = x';
>> size(y)
ans =
50 1
>> max(size(x))
ans =
50
• Trovare la lunghezza di un array
>> x = 1 : 50;
>> length(x)
ans =
50
>> y = x';
>> length(y)
ans =
50
Righe
Colonne
Righe
Colonne
MATLAB: Array ed Introduzione alle Matrici
Semplici Operazioni su Array – 3/3• Trovare la dimensione di un array
>> x = 1 : 50;
>> size(x)
ans =
1 50
>> y = x';
>> size(y)
ans =
50 1
>> max(size(x))
ans =
50
• Trovare la lunghezza di un array
>> x = 1 : 50;
>> length(x)
ans =
50
>> y = x';
>> length(y)
ans =
50
Righe
Colonne
Righe
Colonne
Restituisce la dimensione massima
MATLAB: Array ed Introduzione alle Matrici
Ricerca in un Array
>> x = [2 8 7 6 4 2 3];
>> find(x == 2)
ans =
1 6
>> find(x > 3)
ans =
2 3 4 5
• I valori di x che sono maggiori di 3 possono essere ottenuti
>> y = x(find(x > 3))
y =
8 7 6 4
Restituisce un array contenente gli indici di tutti i valori uguali a 2 (x == 2)
Restituisce un array contenente gli indici di tutti i valori maggiori di 3 (x > 3)
MATLAB: Array ed Introduzione alle Matrici
(indici) 1 2 3 4 5 6 7
Possiamo usare la funzione find, che restituisce indici
Ricerca in un Array
>> x = [2 8 7 6 4 2 3];
>> find(x == 2)
ans =
1 6
>> find(x > 3)
ans =
2 3 4 5
• I valori di x che sono maggiori di 3 possono essere ottenuti
>> y = x(find(x > 3)) find(x > 3) [2 3 4 5] x([2 3 4 5])
y =
8 7 6 4
Restituisce un array contenente gli indici di tutti i valori uguali a 2 (x == 2)
Restituisce un array contenente gli indici di tutti i valori maggiori di 3 (x > 3)
MATLAB: Array ed Introduzione alle Matrici
(indici) 1 2 3 4 5 6 7
Possiamo usare la funzione find, che restituisce indici
Unione ed Intersezione di Array• Intersezione tra due array
>> A = [ 1 2 3 ];
>> B = [ 3 4 5 ];
>> intersezione = intersect(A, B)
intersezione =
3
• Unione tra due array
>> unione = union(A, B)
unione =
1 2 3 4 5
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 1/8• Somma tra array e scalare
>> v = [ 1 2 3 ];
>> z = v + 1
z =
2 3 4
• Sottrazione tra array e scalare
>> v = [ 5 6 7 ];
>> z = v - 2
z =
3 4 5
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 2/8• Moltiplicazione e divisione tra array e scalare
>> v = [ 5 6 7 ];
>> z = v * 3
z =
15 18 21
>> v = [ 4 6 8 ];
>> z = v / 2
z =
2 3 4
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 3/8• Elevamento a potenza (scalare, elemento per elemento)
>> v = [ 5 6 7 ];
>> z = v.^2
z =
25 36 49
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 4/8• Somma tra due array
>> v = [ 5 6 7 ];
>> z = [ 2 3 4 ];
>> s = v + z
s =
7 9 11
• Funziona allo stesso modo per la sottrazione
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 5/8• Moltiplicazione tra due array
>> prezzo = [ 100 200 700 ];
>> quant = [ 2; 4; 3 ];
>> totale = prezzo * quant
totale =
3100
100 200 700
2
4
3
prezzo
quant
*
100*2 + 200*4 + 700*3
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 5/8• Moltiplicazione tra due array
>> prezzo = [ 100 200 700 ];
>> quant = [ 2; 4; 3 ];
>> totale = prezzo * quant
totale =
3100
100 200 700
2
4
3
prezzo
quant
*
ATTENZIONE: Le dimensioni degli array devono essere compatibili!
100*2 + 200*4 + 700*3
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 6/8• Moltiplicazione tra due array (elemento per elemento)
>> v = [ 9 5 8 ];
>> z = [ 3 8 4 ];
>> r = v.*z
r =
27 40 32
9 5 8v
3 8 4z
27 40 32r
.*
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 6/8• Moltiplicazione tra due array (elemento per elemento)
>> v = [ 9 5 8 ];
>> z = [ 3 8 4 ];
>> r = v.*z
r =
27 40 32
9 5 8v
3 8 4z
27 40 32r
.*
ATTENZIONE: Le dimensioni degli array devono essere compatibili!
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 7/8• Divisione tra due array (elemento per elemento)
>> v = [ 9 6 8 ];
>> z = [ 3 2 4 ];
>> r = v./z
r =
3 3 2
9 6 8v
3 2 4z
3 3 2r
./
MATLAB: Array ed Introduzione alle Matrici
Operazioni Aritmetiche su Array – 8/8• Divisione tra due array (elemento per elemento)
>> v = [ 9 6 8 ];
>> z = [ 3 2 4 ];
>> r = v./z
r =
3 3 2
9 6 8v
3 2 4z
3 3 2r
./
ATTENZIONE: Le dimensioni degli array devono essere compatibili!
MATLAB: Array ed Introduzione alle Matrici
Esercizi• Dato il seguente array riga
v = [ 4 7 8 9 19 24 32 1 7 9 ]
1. Calcolare la differenza tra il massimo ed il minimo
2. Definire un array w che contiene gli elementi di v,aventi indice 1, 2 e 7
3. Definire un array h che contiene l’intersezione tra v e w
4. Definire un array z che contiene tutti gli elementi di v,maggiori della media di w
MATLAB: Array ed Introduzione alle Matrici