Matrici
INTRODUZIONE
Una matrice è una tabella ordinata di elementi:
Un esempio è la matrice
In Matlab può essere ottenuta in vari modi:
>> [1 2 3; 4 5 6]
>> [1, 2, 3; 4, 5, 6]
>> [1 2 3
4 5 6]
Se la scrittura è eseguita correttamente la risposta di Matlab è:
ans =
1 2 3
4 5 6
Si noti come lo spazio e la "," siano equivalenti per separare gli elementi di una riga mentre l'a-capo e il ";" siano equivalenti per separare gli elementi di una colonna.
Un vettore riga è una matrice formata da una sola riga, per esempio
>> [1 2 3 4 5 6 7 8 9]
ans =
1 2 3 4 5 6 7 8 9
Un vettore colonna è una matrice formata da una sola colonna, per esempio
>> [1; 2; 3; 4; 5; 6; 7; 8; 9]
ans =
1
2
3
4
5
6
7
8
9
Si noti che un vettore riga e un vettore colonna sono differenti.
Una matrice può essere generata anche mediante funzioni built-in di MATLAB. Ad esempio zeros(n,m), ones(n,m), eye(n,m)
>> zeros(3,2)
ans =
0 0
0 0
0 0
>> ones(2,3)
ans =
1 1 1
1 1 1
>> eye(2,2)
ans =
1 0
0 1
Gli elementi di una matrice sono indirizzabili mediante indice fra parentesi tonde
>> A = [1 2 3; 4 5 6];
>> A(2,1)
ans =
4
Una matrice può essere costruita definendo le sue sottomatrici
>> A = [1 2 3; 4 5 6];
>> Y = [7 8 9];
>> B = [A;Y]
B =
1 2 3
4 5 6
7 8 9
OPERAZIONI SU MATRICI
Il prodotto è definito come il prodotto matriciale righe per colonne
>> [1 2; 3 4; 5 6]*[4 4; 5 5]
ans =
14 14
32 32
50 50
Il prodotto scalare (elemento per elemento) viene indicato con .*
>> [1 2 3 4 5 6] .* [7 8 9 10 11 12]
ans =
7 16 27 40 55 72
Se A è una matrice quadrata e p è uno scalare, Aˆp=A*A*A
L’elevamento a potenza scalare (elemento per elemento) si indica con .ˆ
La divisione viene effettuata mediante due simboli / e \
Supponendo che A sia una matrice quadrata non singolare
X=B/A è soluzione di X*A = B o X = B*inv(A)
X=A\B è soluzione di A*X = B o X = inv(A)*B
con X che ha le stesse dimensioni di B.
La divisione scalare (elemento per elemento) viene indicata con ./
>> [1 2 3 4 5 6] ./ [7 8 9 10 11 12]
ans =
0.1429 0.2500 0.3333 0.4000 0.4545 0.5000
In Matlab le espressioni del tipo exp(A), sqrt(A), log(A) sono considerate OPERAZIONI SUI VETTORI (array), ovvero definite su ciascun elemento della matrice A.
E possibile utilizzare convenientemente anche degli operatori relazionali:
< minore di
> maggiore di
>= maggiore uguale
<= minore uguale
== uguale a
˜= diverso da
e degli operatori logici
& and
| or
˜ not
Ad esempio, mediante l’istruzione find, si possono selezionare sottoinsiemi di matrici usando gli operatori relazionali
>> A=[4 1 8 0];
>> find(A>2)
ans =
1 3