How can I perform multi-dimensional matrix multiplication in MATLAB?
37 次查看(过去 30 天)
显示 更早的评论
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
2023-9-21
编辑:MathWorks Support Team
2023-9-7
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 个评论
Bruno Luong
2023-9-8
Make it n2-by-n1-by-p.
Haman
2023-9-21
@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.
更多回答(0 个)
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!