Matlab Array e Matrici
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
>> 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?
>> x = -2
>> abs(x)
ans =
2
1 2 3 4
• Quasi tutto ciò che viene creato in MATLAB, è creato a partire da array
1 2 3 4
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
• Esempio 1
• Array di voti
24 18 25 22 23 30 20
• Esempio 2
0.025 0.002 0.425 0.790
• 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
• 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
• vet1=[1:1:10]
• RISULTATO: vet1=[1,2,3,4,5,6,7,8,9,10]
x1 x2
n elementi
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
Indici: 1 2 3 4 5 6 7
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
2. v(2) = []
54 19 20 12 15
3. v = [54 20 12 15]
54 20 12 15
2. v(2:4) = []
54 19 20 12 15
3. v = [54 15]
54 15
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
• 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
>> 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
>> 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
Zeri
Limite array
>> max(size(x))
ans =
50
>> max(size(x))
ans =
50
>> max(size(x))
ans =
50
>> find(x == 2)
Trova gli indici di tutti
ans = i valori uguali a 2
1 6
ans =
2 3 4 5
y =
8 7 6 4
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
>> v = [ 4 6 8 ];
>> z = v / 2
z =
2 3 4
prezzo 2
100 200 700 * 4
3
prezzo 2
100 200 700 * 4
3
v 9 5 8
.*
z 3 8 4
r 27 40 32
v 9 5 8
.*
z 3 8 4
r 27 40 32
v 9 6 8
./
z 3 2 4
r 3 3 2
v 9 6 8
./
z 3 2 4
r 3 3 2
Maria 12000 18 4
Antonio 21000 8 10
Francesco 30000 10 12
Chiara 60000 2 1
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
• 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
• 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
2 4 10
16 3 7
3
4 8 11
24 2 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
2 4 10
16 3 7
4 8 11
24 2 1
• 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
• 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
1 1 4 2 7 3
Ordine 2 4 5 5 8 6
3 7 6 8 9 9
y = zeros(3,3); y = zeros(3,3);
y(1,3) = 4 x = ones(2,2);
y(1 : 2, 1 : 2) = x
y = y =
0 0 4 1 1 0
0 0 0 1 1 0
0 0 0 0 0 0
2x2 1x1
y =
4 4 0
4 4 0
0 0 0
5x5 2x2
y =
1 1
1 1
• A(2,:)=[] 2 4 10
2 4 10
16 3 7
4 8 11
4 8 11
24 2 1
24 2 1
• A(:,[1 3])=[]
2 4 10 4
4 8 11 8
24 2 1 2
>> y = x ’
Il simbolo ’ è detto operatore
y = di trasposizione
2 3
4 6
6 9
• sort(A)
• Ordina ogni colonna della matrice A in maniera crescente
40 33 42
48 2 47
>> sum(x, 1)
ans =
88 35 89
>> sum(x, 2)
ans =
115
97
A =
40 33 42
48 2 47
>> s = size(A)
s =
2 3
A =
40 33 42
48 2 47
>> s = size(A)
s =
2 3
Numero di righe
Numero di colonne
• 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
>> find(A)
ans =
6 7 9
>> x = [1 2 3; 7 8 9; 4 5 6]
x =
1 2 3
7 8 9
4 5 6
>> any(A)
ans =
0 1 1 0
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
• Sottrazione
>> y = x – 1
y =
3 7 11
5 11 17
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
2 3 4 * 4 1 = 16 12
2 4 5 0 2 18 15
2 1
ans =
16 12
18 15