Azzera filtri
Azzera filtri

How can I perform multi-dimensional matrix multiplication in MATLAB?

35 visualizzazioni (ultimi 30 giorni)
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
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
Bruno Luong il 8 Set 2023
@MathWorks Support Team staff "which should result in a new matrix of size n1-by-n1-by-p."
Make it n2-by-n1-by-p.
Haman
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.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Mathematics in Help Center e File Exchange

Prodotti

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by