How can I perform multi-dimensional matrix multiplication in MATLAB?
37 views (last 30 days)
Show older comments
MathWorks Support Team
on 27 Jun 2009
Commented: Haman
on 21 Sep 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?
Accepted Answer
MathWorks Support Team
on 21 Sep 2023
Edited: MathWorks Support Team
on 7 Sep 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 Comments
Bruno Luong
on 8 Sep 2023
Make it n2-by-n1-by-p.
Haman
on 21 Sep 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.
More Answers (0)
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!