Operazioni su array vs operazioni matriciali
Introduzione
MATLAB® ha due diversi tipi di operazioni aritmetiche: operazioni su array e operazioni matriciali. È possibile utilizzare queste operazioni aritmetiche per eseguire calcoli numerici, ad esempio sommare due numeri, elevare gli elementi di un array a una determinata potenza o moltiplicare due matrici.
Le operazioni matriciali seguono le regole dell'algebra lineare. Le operazioni su array, invece, eseguono operazioni elemento per elemento e supportano gli array multidimensionali. Il carattere punto (.) distingue le operazioni su array dalle operazioni matriciali. Tuttavia, poiché le operazioni matriciali e le operazioni su array sono le stesse per l'addizione e la sottrazione, le coppie di caratteri .+ e .- non sono necessarie.
Operazioni su array
Le operazioni su array eseguono operazioni elemento per elemento sugli elementi corrispondenti di vettori, matrici e array multidimensionali. Se gli operandi hanno la stessa grandezza, ogni elemento del primo operando viene associato all'elemento nella stessa posizione del secondo operando. Se gli operandi hanno grandezze compatibili, ogni input viene espanso implicitamente nella misura necessaria per corrispondere alla grandezza dell'altro operando.
A titolo di semplice esempio, è possibile sommare due vettori con la stessa grandezza.
A = [1 1 1]
A =
1 1 1
B = [1 2 3]
B =
1 2 3
A+B
ans =
2 3 4Se un operando è uno scalare e l'altro no, MATLAB espande implicitamente lo scalare affinché abbia la stessa grandezza dell'altro operando. Ad esempio, è possibile calcolare il prodotto elemento per elemento di uno scalare e di una matrice.
A = [1 2 3; 1 2 3]
A =
1 2 3
1 2 33.*A
ans =
3 6 9
3 6 9L'espansione implicita funziona anche se si sottrae un vettore 1x3 da una matrice 3x3, in quanto le due grandezze sono compatibili. Quando si esegue la sottrazione, il vettore viene espanso implicitamente per diventare una matrice 3x3.
A = [1 1 1; 2 2 2; 3 3 3]
A =
1 1 1
2 2 2
3 3 3m = [2 4 6]
m =
2 4 6A - m
ans =
-1 -3 -5
0 -2 -4
1 -1 -3Un vettore riga e un vettore colonna hanno grandezze compatibili. Se si somma un vettore 1x3 a un vettore 2x1, ogni vettore si espande implicitamente in una matrice 2x3 prima che MATLAB esegua l'addizione elemento per elemento.
x = [1 2 3]
x =
1 2 3y = [10; 15]
y =
10
15x + y
ans =
11 12 13
16 17 18Se le grandezze dei due operandi sono incompatibili, si ottiene un errore.
A = [8 1 6; 3 5 7; 4 9 2]
A =
8 1 6
3 5 7
4 9 2m = [2 4]
m =
2 4A - m
Arrays have incompatible sizes for this operation.
Per maggiori informazioni, vedere Grandezze di array compatibili per le operazioni di base.
La tabella seguente fornisce un riepilogo degli operatori aritmetici su array in MATLAB. Per informazioni specifiche sulla funzione, fare clic sul link alla pagina di riferimento della funzione nell'ultima colonna.
Operatore | Scopo | Descrizione | Pagina di riferimento |
|---|---|---|---|
| Addizione |
| plus |
| Più unario |
| uplus |
| Sottrazione |
| minus |
| Meno unario |
| uminus |
| Moltiplicazione elemento per elemento |
| times |
| Elevamento a potenza elemento per elemento |
| power |
./ | Divisione dell'array sulla destra |
| rdivide |
| Divisione dell'array sulla sinistra |
| ldivide |
| Trasposizione di array |
| transpose |
Operazioni matriciali
Le operazioni matriciali seguono le regole dell'algebra lineare e non sono compatibili con gli array multidimensionali. La grandezza e la forma richieste degli input, in relazione l'uno all'altro, dipendono dall'operazione. Per input non scalari, gli operatori matriciali calcolano generalmente risposte diverse rispetto alle controparti degli operatori di array.
Ad esempio, se si utilizza l'operatore di divisione della matrice sulla destra / per dividere due matrici, le matrici devono avere lo stesso numero di colonne. Ma se si utilizza l'operatore di moltiplicazione di matrici *, per moltiplicare due matrici, allora le matrici devono avere una dimensione interna comune. Ossia, il numero di colonne del primo input deve essere uguale al numero di righe del secondo input. L'operatore di moltiplicazione di matrici calcola il prodotto di due matrici con la formula
Per verificarlo, si può calcolare il prodotto di due matrici.
A = [1 3;2 4]
A =
1 3
2 4
B = [3 0;1 5]
B =
3 0
1 5
A*B
ans =
6 15
10 20Il prodotto matriciale precedente non è uguale al successivo prodotto elemento per elemento.
A.*B
ans =
3 0
2 20La tabella seguente fornisce un riepilogo degli operatori aritmetici matriciali in MATLAB. Per informazioni specifiche sulla funzione, fare clic sul link alla pagina di riferimento della funzione nell'ultima colonna.
Operatore | Scopo | Descrizione | Pagina di riferimento |
|---|---|---|---|
| Moltiplicazione di matrici |
| mtimes |
| Divisione della matrice sulla sinistra |
| mldivide |
| Divisione della matrice sulla destra |
| mrdivide |
| Potenza della matrice |
| mpower |
| Trasposto complesso coniugato |
| ctranspose |