How can I perform multi-dimensional matrix multiplication in MATLAB?
39 visualizzazioni (ultimi 30 giorni)
MathWorks Support Team il 27 Giu 2009
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?
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: