Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni

Matlab Array e Matrici

Caricato da

partecipazionils
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
2 visualizzazioni

Matlab Array e Matrici

Caricato da

partecipazionils
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 91

Fondamenti di Informatica

MATLAB: Array e Matrici

Pro f. M a rco L o mb a rd i
A.A. 2019/2020
MATLAB: Array e Matrici – OUTLINE
•Operazioni su Variabili
•Matrici
•Array in MATLAB
• Indici Array
• Operazioni su Array
•Matrici in MATLAB
• Indici Matrici
• Operazioni su Matrici

MATLAB: Array e Matrici


Operazioni su Variabili – 1/2
Arrotondamento Arrotondamento per Arrotondamento per
eccesso difetto

>> 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
MATLAB: Array e 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 e 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 e Matrici


Matrici – 1/7
• 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, aventi
dimensione 1 × 1

MATLAB: Array e Matrici


Matrici – 2/7
• Una matrice contiene elementi numerati per riga e per colonna, ad
esempio mij denota l’elemento alla riga i e colonna j

MATLAB: Array e Matrici


Matrici – 3/7
• 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 e Matrici


Matrici – 4/7
Array
• Una struttura dati è un particolare modo di organizzare i dati in un
computer
• Così che tali dati possano essere utilizzati in modo efficiente

• L’array (o vettore) è la struttura dati principale utilizzata da MATLAB


• Detto anche matrice monodimensionale

• Quasi tutto ciò che viene creato in MATLAB, è creato a partire da array

MATLAB: Array e Matrici


Matrici – 6/7
• Ogni cosa in MATLAB è rappresentata mediante matrici!

• Se hanno due dimensioni (2D)


• Il loro aspetto intuitivo è quello di un rettangolo (o quadrato)

MATLAB: Array e Matrici


Matrici – 7/7
colonne

1 2 3 4

1 (1, 1) (1, 2) (1, 3) (1, 4)


righe

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)

MATLAB: Array e Matrici


Matrici – 7/7
• Ogni cosa in MATLAB è rappresentata mediante matrici!

• Se hanno tre dimensioni (3D)


• Il loro aspetto intuitivo è quello di un parallelepipedo

MATLAB: Array e Matrici


(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)

colonne
(1, 1, 1) (1, 2, 1) (1, 3, 1) (1, 4, 1)
(2, 1, 1) (2, 2, 1) (2, 3, 1) (2, 4, 1)
righe

(3, 1, 1) (3, 2, 1) (3, 3, 1) (3, 4, 1)


(4, 1, 1) (4, 2, 1) (4, 3, 1) (4, 4, 1)

MATLAB: Array e Matrici


Array
• Un array (o vettore) è una collezione indicizzata
di variabili (elementi) dello stesso tipo

• Esempio 1
• Array di voti
24 18 25 22 23 30 20

• Esempio 2
0.025 0.002 0.425 0.790

MATLAB: Array e Matrici


Creare un Array – 1/7
• Un array in MATLAB si crea scrivendo gli elementi che lo
compongono all’interno di una coppia di parentesi
quadre
• 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 e Matrici


Creare un Array – 2/7
• Creare un array riga composto da tutti zero
>> x = zeros(1, 5) Una riga, 5
x = colonne
0 0 0 0 0
• Creare un array riga composto da tutti uno
>> x = ones(1, 6) Una riga, 6
x = colonne
1 1 1 1 1 1
• Creare un array riga composto da numeri pseudocasuali
>> x = rand(1, 4)
x = Genera numeri
pseudocasuali
uniformemente
0.9501 0.2311 0.6068 0.4860 distribuiti tra 0 e 1

MATLAB: Array e Matrici


Creare un Array – 3/7
• MATLAB permette anche di creare array colonna (elementi disposti
in senso verticale). Esistono due metodi per farlo

Metodo 1 (separatore ;) Metodo 2 (operatore di trasposizione ’)


vet=[5;6;7;8] vet=[5 6 7 8]’

RISULTATO (vettore colonna):


vet =
5
6
7
8
• MATLAB visualizza gli array riga orizzontalmente e gli array colonna
verticalmente

MATLAB: Array e Matrici


Creare un Array – 4/7
• MATLAB permette di creare nuovi array partendo da array
preesistenti

• Esempio
vet1=[1 2 3];
vet2=[4 5 6];
vet3=[vet1,vet2];
vet4=[vet3, vet1];
>> disp(vet3) La funzione disp mostra il contenuto di una variabile
1 2 3 4 5 6
>> disp(vet4)
1 2 3 4 5 6 1 2 3

vet3 vet1

MATLAB: Array e Matrici


Creare un Array – 5/7
• È possibile creare un array di elementi
regolarmente intervallati
• >> x = 10:1:15

MATLAB: Array e Matrici


Creare un Array – 5/7
• È possibile creare un array di elementi
regolarmente intervallati
• >> x = 10:1:15

Si ferma quando arriva a 15


Inizia da 10

Ad incrementi di 1 (con intervallo 1)

• RISULTATO: x = [10 11 12 13 14 15]

MATLAB: Array e Matrici


Creare un Array – 5/7
• È possibile creare un array di elementi
regolarmente intervallati
• >> x = 10:1:15 Equivalente a x=[10:1:15]

Si ferma quando arriva a 15


Inizia da 10

Ad incrementi di 1 (con intervallo 1)

• RISULTATO: x = [10 11 12 13 14 15]

MATLAB: Array e Matrici


Creare un Array – 6/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 lo


pone di default uguale a 1
• Esempio
• 1:1:10 equivale a 1:10

MATLAB: Array e Matrici


Creare un Array – 7/7
• linspace(x1, x2, n)
• Crea un array riga di elementi linearmente intervallati, indicando il numero
di valori invece dell’incremento (come visto precedentemente)
• Genera n elementi tra x1 ed x2

x1 x2

n elementi

MATLAB: Array e Matrici


Creare un Array – 7/7
• Esempio 1
• x=linspace(0, 9, 10)
• RISULTATO: x=[0 1 2 3 4 5 6 7 8 9]
0 1 2 3 4 5 6 7 8 9

10 elementi

• Esempio 2
• x=linspace(0, 9, 3)
• RISULTATO: x=[0.00000 4.50000 9.00000]
0 4.5 9

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 e Matrici


Indicizzare un Array – 1/6
• Come accedere ad uno specifico elemento
dell’array?
• Si utilizzano gli indici (a partire da 1)
v
Elementi: 24 18 25 22 23 30 20

Indici: 1 2 3 4 5 6 7

v(i)  indica l’i-esimo elemento di v

MATLAB: Array e Matrici


Indicizzare un Array – 2/6
• Esempio 1
• v=[4 8 5 32 16 4] 4 8 5 32 16 4
• v(2)

4 8 5 32 16 4
• Secondo elemento dell’array v  RISULTATO: elemento con valore 8
• Esempio 2
• v=[4 8 5 32 16 4]
• v(5)

4 8 5 32 16 4

• 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)

MATLAB: Array e Matrici


Indicizzare un Array – 3/6
• Manipolare un array tramite indici

• Cancellare un elemento da un array


1. v = [54 19 20 12 15]
54 19 20 12 15

2. v(2) = []

54 19 20 12 15

3. v = [54 20 12 15]
54 20 12 15

MATLAB: Array e Matrici


Indicizzare un Array – 3/6
• Manipolare un array tramite indici

• Cancellare più elementi da un array


1. v = [54 19 20 12 15]
54 19 20 12 15

2. v(2:4) = []

54 19 20 12 15

3. v = [54 15]
54 15

MATLAB: Array e 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]
11 23 8 56 5

2. v(4) = 77
11 23 8 ---56--- 5

11 23 8 77 5

3. v = [11 23 8 77 5]
11 23 8 77 5

MATLAB: Array e Matrici


Indicizzare un Array – 5/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, 6, 3, 15

MATLAB: Array e Matrici


Indicizzare un Array – 5/6
• È possibile accedere a più di un elemento dell’array alla
volta

>> x = 10 : -1 : 1
x = 3 4 9 Indici

10 9 8 7 6 5 4 3 2 1 Elementi

>> y = x([3,9,4])
y =
8 2 7

MATLAB: Array e Matrici


Indicizzare un Array – 6/6
• È possibile accedere a più di un elemento dell’array alla
volta

>> x = 10 : -1 : 1
x = 2 2+2=4 4+2=6 6+2=8 Indici

10 9 8 7 6 5 4 3 2 1 Elementi

>> y = x(2 : 2 : 8)
y = Indice iniziale

9 7 5 3
Indice finale
Incremento

MATLAB: Array e Matrici


Indicizzare un Array – 6/6
Nota: L’aggiunta di un elemento
oltre il limite di un array non è
>> x = 10 : -1 : 1; un errore!
>> x(14) = 99;
>> disp(x);
10 9 8 7 6 5 4 3 2 1 0 0 0 99
>>
1 2 3 4 5 6 7 8 9 10 11 12 13 14
10 9 8 7 6 5 4 3 2 1 0 0 0 99

Zeri

Limite array

MATLAB: Array e 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 =
Columns 1 through 9
1.0000 1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000 1.8000
Columns 10 through 11
1.9000 2.0000
>> 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 e 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 = -0.3 : 0.1 : 0.3
b =
-0.3000 -0.2000 -0.1000 0 0.1000 0.2000 0.3000
>> c = floor(b)
c =
-1 -1 -1 0 0 0 0
>> d = abs(c)
d =
1 1 1 0 0 0 0

MATLAB: Array e Matrici


Semplici Operazioni su Array – 2/3
Supponiamo di avere il seguente array x
>> x = 1 : 50;

• Trovare il numero massimo in un array


>> max(x)
RISULTATO: 50

• Trovare il numero minimo in un array


>> min(x)
RISULTATO: 1

• Trovare la media di un array


>> mean(x)
RISULTATO: 25.500

MATLAB: Array e Matrici


Semplici Operazioni su Array – 3/3
• Trovare la dimensione di un array • Trovare la lunghezza di una matrice
>> x = 1 : 50; >> x = 1 : 50;
>> size(x) >> length(x)
ans = ans =
1 50 50

>> y = x'; >> y = x';


>> size(y) >> length(y)
ans = ans =
50 1 50

>> max(size(x))
ans =
50

MATLAB: Array e Matrici


Semplici Operazioni su Array – 3/3
• Trovare la dimensione di un array • Trovare la lunghezza di un array
>> x = 1 : 50; >> x = 1 : 50;
>> size(x) >> length(x)
ans = Righe ans =
1 50 Colonne 50

>> y = x'; >> y = x';


>> size(y) >> length(y)
ans = Righe ans =
50 1 50
Colonne

>> max(size(x))
ans =
50

MATLAB: Array e Matrici


Semplici Operazioni su Array – 3/3
• Trovare la dimensione di un array • Trovare la lunghezza di un array
>> x = 1 : 50; >> x = 1 : 50;
>> size(x) >> length(x) Restituisce la
ans = Righe ans = dimensione massima
1 50 Colonne 50

>> y = x'; >> y = x';


>> size(y) >> length(y)
ans = Righe ans =
50 1 50
Colonne

>> max(size(x))
ans =
50

MATLAB: Array e Matrici


Ricerca in Sotto-array
• La funzione find restituisce indici
>> x = [2 8 7 6 4 2 3];

>> find(x == 2)
Trova gli indici di tutti
ans = i valori uguali a 2
1 6

Trova gli indici di tutti i valori maggiori di 3


>> 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

MATLAB: Array e Matrici


Unione ed Intersezione di Array
• Intersezione tra due array
A = [1, 3, 5; 7, 9, 11, 13, 15, 17,
>> A = 1 : 2 : 31; 19, 21, 23, 25, 27, 29, 31]
>> B = [6 7 8 12 14 18 19 20];

>> intersezione = intersect(A, B)

intersezione = Maggiori informazioni


digitando help intersect
7 19

• Unione tra due array


>> unione = union(A, B)

unione =

Columns 1 through 15

1 3 5 6 7 8 9 11 12 13 14 15 17 18 19

Columns 16 through

22 20 21 23 25 27 29 31

MATLAB: Array e 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 e 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 e 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 e 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 e Matrici


Operazioni Aritmetiche su Array – 5/8
• Moltiplicazione tra due array
>> prezzo = [ 100 200 700 ];
>> quant = [ 2; 4; 3 ];
>> totale = prezzo * quant
totale =
100*2 + 200*4 + 700*3
3100
quant

prezzo 2
100 200 700 * 4
3

MATLAB: Array e Matrici


Operazioni Aritmetiche su Array – 5/8
• Moltiplicazione tra due array
>> prezzo = [ 100 200 700 ];
>> quant = [ 2; 4; 3 ];
>> totale = prezzo * quant
totale =
100*2 + 200*4 + 700*3
3100
quant

prezzo 2
100 200 700 * 4
3

ATTENZIONE: Le dimensioni degli array devono essere compatibili!

MATLAB: Array e 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

v 9 5 8
.*
z 3 8 4

r 27 40 32

MATLAB: Array e 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 ATTENZIONE: Le dimensioni degli array
r = devono essere compatibili!
27 40 32

v 9 5 8
.*
z 3 8 4

r 27 40 32

MATLAB: Array e 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

v 9 6 8
./
z 3 2 4

r 3 3 2

MATLAB: Array e 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 ATTENZIONE: Le dimensioni degli array
r = devono essere compatibili!
3 3 2

v 9 6 8
./
z 3 2 4

r 3 3 2

MATLAB: Array e Matrici


Simulazione Prima Prova
Modulo 1
Simulazione Prima Prova
Modulo 2
Algoritmo
Simulazione Prima Prova
Modulo 2
Algoritmo
Prima Prova Intercorso
Matrici (Array 2D)
• Perché abbiamo bisogno delle matrici?

Impiegato Stipendio Giorni di Giorni di


annuale lordo vacanza malattia

Maria 12000 18 4

Antonio 21000 8 10

Francesco 30000 10 12

Chiara 60000 2 1

• Esistono numerosi scenari reali in cui le matrici vengono concretamente


utilizzate
• Elaborazione delle immagini
• Gestione di dati tabellari
• E molto altro ancora…

MATLAB: Array e Matrici


Matrici (Array 2D)
• Perché abbiamo bisogno delle matrici?
Impiegato Stipendio Giorni di Giorni di
annuale lordo vacanza malattia

Maria 12000 18 4

Antonio 21000 8 10

Francesco 30000 10 12

Chiara 60000 2 1

• Gli array (1D) che abbiamo visto finora possono essere visti come casi
particolari di matrici (2D), con dimensione 1 × n oppure n × 1

MATLAB: Array e Matrici


Creare una Matrice – 1/4
• Possiamo creare una matrice digitando direttamente i suoi elementi in due
modi diversi

• Modo 1 • Modo 2
A = [2,4,10 A = [2,4,10;16,3,7]
16,3,7]
Oppure Oppure
A = [2 4 10;16 3 7]
A = [2 4 10
16 3 7]
RISULTATO:
A =
2 4 10
16 3 7
• OSSERVAZIONE IMPORTANTE: Spazi e virgole separano gli elementi per colonne, mentre il
punto e virgola separa gli elementi per riga

MATLAB: Array e Matrici


Creare una Matrice – 2/4
• zeros(nr, nc)
• Crea una matrice nr (num. righe) x nc (num. colonne) composta da tutti
zero (0)
>> x = zeros(2, 3) Numero di colonne
x =
0 0 0
Numero di righe
0 0 0

• ones(nr, nc)
• Crea una matrice nr x nc composta da tutti uno (1)
>> x = ones(2, 3)
x =
1 1 1
1 1 1

MATLAB: Array e Matrici


Creare una Matrice – 3/4
• eye(nr, nc)
• Crea una matrice identità nr x nc
>> x = eye(3, 3)
x =
1 0 0
0 1 0
0 0 1
• rand(nr, nc)
• Crea una matrice nr x nc di numeri pseudocasuali, compresi tra 0 e 1
>> x = rand(2, 3)
x =
0.8147 0.1270 0.6324
0.9058 0.9134 0.0975

MATLAB: Array e Matrici


Creare una Matrice – 4/4
• cat(n,A,B,C,..)
• Crea una nuova matrice concatenando le matrici A, B, C,… lungo la dimensione n
• Se n=1, la concatenazione è fatta per righe
• Se n=2, la concatenazione è fatta per colonne

>> A=[1 2; 3 4];


>> B=[5 6; 7 8];

>> cat(1,A,B) >> cat(2,A,B)


ans = ans =
1 2 5 6
1 2
3 4 7 8
3 4
5 6
Equivalente a
7 8 >> [A, B]
Equivalente a
>> [A; B]

MATLAB: Array e Matrici


Indicizzare una Matrice – 1/7
• L’indicizzazione di una matrice è molto simile a quella di un array
• x(r, c)  r indica la riga, c indica la colonna
• Esempio
• x = [2,4,10; 16,3,7; 4,8,11; 24,2,1];
• x(3, 2)
2

2 4 10
16 3 7
3
4 8 11
24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 2/7
• Indicizzare righe e colonne di una matrice
• x(r, :)  si riferisce all’intera riga r
• x(:, c)  si riferisce all’intera colonna c

• Esempio (intera riga) • Esempio (intera colonna)


• x(3, :) • x(:, 1)

2 4 10 2 4 10
16 3 7 16 3 7
4 8 11 4 8 11
24 2 1 24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 2/7
• Esempio (intera matrice)
• x(:, :)

2 4 10
16 3 7
4 8 11
24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 3/7
• Indicizzare sotto-array e sotto-matrici

• Esempio 1 • Esempio 2
• x(3:4,2:3) • x(2:3, 2)

2 4 10 2 4 10
16 3 7 16 3 7
4 8 11 4 8 11
24 2 1 24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 3/7
• Indicizzare sotto-array e sotto-matrici

• Esempio 3 • Esempio 4
• x(1:3, 3) • x(:, 1:2)

2 4 10 2 4 10
16 3 7 16 3 7
4 8 11 4 8 11
24 2 1 24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 4/7
• Quindi, tramite l’operatore due punti : di
MATLAB, è possibile selezionare all’interno di una
matrice
• Righe
• Colonne
• Sotto-array e sotto-matrici

MATLAB: Array e Matrici


Indicizzare una Matrice – 4/7
• È possibile indicizzare una matrice usando una singola coordinata
>> A = [1 2 3; 4 5 6; 7 8 9];
>> disp(A)

1 1 4 2 7 3
Ordine 2 4 5 5 8 6
3 7 6 8 9 9

Esempi >> A(2) >> A(5)


ans = ans =
4 5

>> A(3) >> A(6)


ans = ans =
7 8

MATLAB: Array e Matrici


Indicizzare una Matrice – 5/7
• La dimensioni delle matrici a sinistra e a destra dell’assegnazione
devono essere identiche
Esempio 1 Esempio 2

y = zeros(3,3); y = zeros(3,3);
y(1,3) = 4 x = ones(2,2);
y(1 : 2, 1 : 2) = x

1x1 = 1x1 2x2 2x2

y = y =
0 0 4 1 1 0
0 0 0 1 1 0
0 0 0 0 0 0

MATLAB: Array e Matrici


Indicizzare una Matrice – 6/7
• La dimensioni delle matrici a sinistra e a destra dell’assegnazione
devono essere identiche, a meno che la matrice di destra non abbia
dimensione 1 x 1
y = zeros(3,3);
y(1:2,1:2) = 4

2x2 1x1

y =
4 4 0
4 4 0
0 0 0

MATLAB: Array e Matrici


Indicizzare una Matrice – 6/7
• La dimensioni delle matrici a sinistra e a destra dell’assegnazione
devono essere identiche, a meno che la matrice di destra non abbia
dimensione 1 x 1, oppure si sta sovrascrivendo una matrice
>> y = zeros(5,5);
>> x = ones(2,2);
>> y = x

5x5 2x2

y =
1 1
1 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 7/7
• Le righe e le colonne di una matrice possono essere
cancellate ponendole uguali all’array vuoto
• Esempio
2 4 10
A 16 3 7
4 8 11
24 2 1

• A(2,:)=[] 2 4 10
2 4 10
16 3 7
4 8 11
4 8 11
24 2 1
24 2 1

MATLAB: Array e Matrici


Indicizzare una Matrice – 7/7
• Le righe e le colonne di una matrice possono essere
cancellate ponendole uguali all’array vuoto
• Esempio
2 4 10
A 4 8 11
24 2 1

• A(:,[1 3])=[]
2 4 10 4
4 8 11 8
24 2 1 2

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 1/7
• Trasposta di una matrice
>> x =[ 2 4 6; 3 6 9]
x =
2 4 6
3 6 9

>> y = x ’
Il simbolo ’ è detto operatore
y = di trasposizione
2 3
4 6
6 9

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 2/7
Massimo e Minimo
• max(A)
• Trova il numero massimo in ogni colonna della matrice A
A =
40 33 42
48 2 47 La funzione min funziona analogamente
>> m = max(A) alla funzione max, ma restituisce il valore
minimo
m =
48 33 47
• È possibile ottenere il massimo elemento dell’intera matrice
• Utilizzando la funzione max vista precedentemente per gli array, che restituisce
l’elemento massimo in un dato array
>> max(max(A))
ans =
48

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 3/7
Somma e Ordinamento
• sum(A)
• Restituisce la somma degli elementi di A
• Se A è un array, effettua la somma gli elementi
• Se A è una matrice, restituisce (in un array) la somma degli elementi di
ciascuna colonna
• sum(A, dim)
• Somma gli elementi di A lungo la dimensione indicata da dim
• Se dim=1, somma gli elementi per colonna
• Se dim=2, somma gli elementi per riga

• sort(A)
• Ordina ogni colonna della matrice A in maniera crescente

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 3/7
Somma e Ordinamento – Esempio sum
x =

40 33 42
48 2 47

>> sum(x, 1)

ans =
88 35 89

>> sum(x, 2)

ans =

115
97

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 4/7
Media
• mean(A)
• Trova la media di ogni colonna della matrice A
A =
40 33 42
48 2 47
>> mean(A)
ans =
44.0000 17.5000 44.5000

• Trova la media di ogni riga della matrice A


>> mean(A,2)
ans =
38.3333
32.3333
MATLAB: Array e Matrici
Semplici Operazioni su Matrici – 5/7
Dimensione e Numero di Elementi
• size(A)
• Restituisce un array riga contenente le dimensioni (num. righe e num. colonne) della
matrice A

A =
40 33 42
48 2 47
>> s = size(A)
s =
2 3

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 5/7
Dimensione e Numero di Elementi
• size(A)
• Restituisce un array contenente le dimensioni (num. righe e num. colonne) della
matrice A

A =
40 33 42
48 2 47
>> s = size(A)
s =
2 3

Numero di righe
Numero di colonne

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 5/7
Dimensione e Numero di Elementi

• length(A)
• Restituisce il numero di elementi di A, se A è un array
• Restituisce il numero massimo tra righe e colonne, se A è una matrice

• numel(A)
• Restituisce il numero di elementi della matrice A

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 6/7
Ricerca
• find(A)
• Restituisce un array contenente gli indici degli elementi non nulli della matrice A
>> A = zeros(4,4);
>> A(3,2)=5;
>> A(1,3)=2;
>> A(2,2)=7;
>> A
A =
0 0 2 0
0 7 0 0
0 5 0 0
0 0 0 0

>> find(A)
ans =
6 7 9

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 6/7
Ricerca
• La funzione find può essere utilizzata mediante indicizzazione a due
coordinate
>> x = [1 2 3; 7 8 9; 4 5 6]
x =
1 2 3
7 8 9 ← valore 7 (riga 2, colonna 1); valore 8 (riga 2, colonna 2); valore 9 (riga 2, colonna 3)
4 5 6 ← valore 6 (riga 3, colonna 3);
>> [riga, colonna] = find(x > 5)
riga =
2
2
2
3
colonna =
1
2
3
3

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 6/7
Ricerca
• La funzione find può anche essere utilizzata mediante
indicizzazione a singola coordinata

>> x = [1 2 3; 7 8 9; 4 5 6]
x =
1 2 3
7 8 9
4 5 6

>> indici = find(x > 5)


indici =
2
5
8
9

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 7/7
Test di Non Nullità
• any(A)
• Verifica se ogni elemento di A è non nullo
• Restituisce 1 se almeno un elemento è non nullo, 0 altrimenti
A =
0 0 2 0
0 7 0 0
0 5 0 0
0 0 0 0

>> any(A)
ans =
0 1 1 0

MATLAB: Array e Matrici


Semplici Operazioni su Matrici – 7/7
Test di Non Nullità
• any(A, dim)
• Se dim=1, il comportamento della funzione è equivalente a quello di any(A)
• Se dim=2, si verifica quanto segue

A =
0 0 2 0
0 7 0 0
0 5 0 0
0 0 0 0
>> any(A,2)
ans =
1
1
1
0

MATLAB: Array e Matrici


Operazioni Aritmetiche su Matrici – 1/4
• Le operazioni aritmetiche viste per gli array sono naturalmente estese
alle matrici
• Somma
>> x =[ 2 4 6; 3 6 9];
>> x = x + x
x =
4 8 12
6 12 18

• Sottrazione
>> y = x – 1
y =
3 7 11
5 11 17

MATLAB: Array e Matrici


Operazioni Aritmetiche su Matrici – 1/4
• Problema: sottrarre 1 da tutti i valori in y che sono più grandi di 4, e
memorizzare il risultato in y stessa
• Possibile soluzione • Soluzione più compatta
>> y = y(find(y > 4))-1
>> indici = find(y > 4)
y =
indici = 4
6
2 10
3 10
16
4
5
6
>> y = y(2:6)-1
y =
4 6 10 10 16

MATLAB: Array e Matrici


Operazioni Aritmetiche su Matrici – 2/4
• Moltiplicazione scalare
>> prezzo = [10 20 30; 2 3 4];
>> nuovo_prezzo = prezzo * 2
nuovo_prezzo =
20 40 60
4 6 8

MATLAB: Array e Matrici


Operazioni Aritmetiche su Matrici – 3/4
• Moltiplicazione elemento per elemento

prezzo = [2 3 4; 2 4 5];
disponibili = [4 0 2; 1 2 1];
prezzo .* disponibili

2 3 4 4 0 2 8 0 8
.* =
2 4 5 1 2 1 2 8 5

ans =

8 0 8
2 8 5

MATLAB: Array e Matrici


Operazioni Aritmetiche su Matrici – 4/4
• Moltiplicazione matriciale
2*4 + 3*0 + 4*2 = 16
prezzo = [2 3 4; 2 4 5]; 2*1 + 3*2 + 4*1 = 12
disponibili = [4 1; 0 2; 2 1]; 2*4 + 4*0 + 5*2 = 18
prezzo * disponibili 2*1 + 4*2 + 5*1 = 15

2 3 4 * 4 1 = 16 12
2 4 5 0 2 18 15
2 1

ans =

16 12
18 15

MATLAB: Array e Matrici

Potrebbero piacerti anche