Grandezze di array compatibili per le operazioni di base
La maggior parte degli operatori e delle funzioni binarie (a due input) di MATLAB® supportano array numerici che presentano grandezze compatibili. Due input hanno grandezze compatibili se, per ciascuna dimensione, le grandezze delle dimensioni degli input sono uguali o una di esse è pari a 1. Nei casi più semplici, due grandezze di array sono compatibili se sono esattamente uguali o se una è uno scalare. MATLAB espande implicitamente gli array con grandezze compatibili in modo che abbiano la stessa grandezza durante l'esecuzione dell'operazione o della funzione elemento per elemento.
Input con grandezze compatibili
Input bidimensionali
Queste sono alcune combinazioni di scalari, vettori e matrici che hanno grandezze compatibili:
Due input che hanno esattamente la stessa grandezza.
Un input è uno scalare.
Un input è una matrice e l'altro è un vettore colonna con lo stesso numero di righe.
Un input è un vettore colonna e l'altro è un vettore riga.
Array multidimensionali
Tutti gli array in MATLAB ha dimensioni finali di grandezza 1. Per gli array multidimensionali, questo significa che una matrice 3x4 è uguale a una matrice di grandezza 3x4x1x1x1. Esempi di array multidimensionali con grandezze compatibili sono:
Un input è una matrice e l'altro è un array tridimensionale con lo stesso numero di righe e di colonne.
Un input è una matrice e l'altro è un array tridimensionale. Le dimensioni sono tutte uguali o una di esse è pari a 1.
Array vuoti
Le regole sono le stesse per gli array vuoti o per gli array che hanno una grandezza della dimensione pari a zero. La grandezza della dimensione che non è uguale a 1 determina la grandezza dell'output. Questo significa che le dimensioni con una grandezza pari a zero devono essere appaiate con una dimensione di grandezza pari a 1 o pari a 0 nell'altro array e che l'output ha una dimensione pari a 0.
A: 1-by-0 B: 3-by-1 Result: 3-by-0
Input con grandezze non compatibili
Gli input incompatibili hanno grandezze che non possono essere espanse implicitamente fino a diventare della stessa dimensione. Ad esempio:
Una delle grandezze della dimensione non è uguale all'altra e nemmeno pari a 1.
A: 3-by-2 B: 4-by-2
Due vettori riga non scalari di lunghezze diverse.
A: 1-by-3 B: 1-by-4
Esempi
Sottrazione di un vettore da una matrice
Per semplificare le operazioni vettore-matrice, utilizzare l'espansione implicita con funzioni dimensionali come sum
, mean
, min
e altre.
Ad esempio, calcolare il valore medio di ciascuna colonna di una matrice, quindi sottrarre il valore medio da ciascun elemento.
A = magic(3)
A = 8 1 6 3 5 7 4 9 2
C = mean(A)
C = 5 5 5
A - C
ans = 3 -4 1 -2 0 2 -1 4 -3
Aggiunta di un vettore riga e colonna
I vettori riga e colonna hanno grandezze compatibili e quando si esegue un'operazione su di essi il risultato è una matrice.
Ad esempio, aggiungere un vettore riga e colonna. Il risultato equivale a bsxfun(@plus,a,b)
.
a = [1 2 3 4]
ans = 1 2 3 4
b = [5; 6; 7]
ans = 5 6 7
a + b
ans = 6 7 8 9 7 8 9 10 8 9 10 11