How can I perform multi-dimensional matrix multiplication in MATLAB?
35 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 27 Giu 2009
Commentato: Haman
il 21 Set 2023
For example, I have a 3-D matrix, "A", of size n1-by-n2-by-p, and a 2-D matrix, "B", of size n2-by-n1. For each page "p", I would like to calculate "B*A(:,:,p)", which should result in a new matrix of size n2-by-n2-by-p.
It is possible to perform this using a FOR loop, but FOR loops are not optimal for MATLAB calculations. Is there a more efficient way to do this?
Risposta accettata
MathWorks Support Team
il 21 Set 2023
Modificato: MathWorks Support Team
il 7 Set 2023
For MATLAB versions before R2020b:
The ability to perform multi-dimensional matrix multiplication in MATLAB is not available.
As a workaround, please use a FOR loop to achieve the intended multi-dimensional matrix multiplication.
For MATLAB versions R2020b and after:
You can use the "pagemtimes" MATLAB function, to perform page-wise (multi-dimensional) matrix multiplication. Please refer to the following documentation page for more information:
For MATLAB versions R2022a and after:
In addition to "pagemtimes", and depending on your workflow, you can further use the "tensorprod" MATLAB function to perform tensor products. Please refer to the following documentation page for more information:
4 Commenti
Bruno Luong
il 8 Set 2023
Make it n2-by-n1-by-p.
Haman
il 21 Set 2023
@Bruno Luong Thank you for pointing out the error. We've updated the example from "B*A(:,:,p)*B" to "B*A(:,:,p)" and the size from "n1-by-n1-by-p" to "n2-by-n2-by-p" to correct the error in size.
Più risposte (0)
Vedere anche
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!