mtimes, *
Moltiplicazione di matrici
Sintassi
Descrizione
è il prodotto matriciale di C = A*BA e B. Se A è una matrice m x p e B è una matrice p x n, C è una matrice m x n definita da
Questa definizione dice che C(i,j) è il prodotto interno dell'i-esima riga di A con la j-esima colonna di B. È possibile scrivere questa definizione utilizzando l'operatore due punti di MATLAB® come
C(i,j) = A(i,:)*B(:,j)
A e B non scalari, il numero di colonne di A deve essere uguale al numero di righe di B. La moltiplicazione di matrici non è universalmente commutativa per input non scalari. Ossia A*B, non è solitamente uguale a B*A. Se almeno un input è scalare, A*B è equivalente a A.*B ed è commutativo.Esempi
Argomenti di input
Argomenti di output
Suggerimenti
Con moltiplicazioni di matrici concatenate come
A*B*C, è possibile migliorare i tempi di esecuzione utilizzando le parentesi per stabilire l'ordine delle operazioni. Si consideri il caso della moltiplicazione di tre matrici conA*B*C, doveAè 500x2,Bè 2x500 eCè 500x2.In assenza di parentesi, l'ordine delle operazioni è da sinistra verso destra, quindi viene calcolato prima
A*Bche produce una matrice 500x500. Questa matrice viene quindi moltiplicata perCper ottenere il risultato 500x2.Se invece si specifica
A*(B*C),B*Cviene moltiplicato per primo, producendo una matrice 2x2. La matrice piccola moltiplica quindiAper produrre lo stesso risultato 500x2, ma con meno operazioni e minore utilizzo di memoria intermedia.
Riferimenti
[1] “BLAS (Basic Linear Algebra Subprograms).” Accessed July 18, 2022. https://netlib.org/blas/.
[2] Davis, Timothy A. “Algorithm 1000: SuiteSparse:GraphBLAS: Graph Algorithms in the Language of Sparse Linear Algebra.” ACM Transactions on Mathematical Software 45, no. 4 (December 31, 2019): 1–25. https://doi.org/10.1145/3322125.