Problem 2237. Mmm! Multi-dimensional Matrix Multiplication
You have got a couple of multi-dimensional matrices, A and B. And want to multiply them. For the first 2 dimensions, an ordinary matrix multiplication applies. And in the other dimensions? Well, they just act as parallel worlds. All 2D matrices are multiplied, for every element in the other dimensions. You may assume that the size in the 1st two dimensions allows simple matrix multiplication: A(:,:,1)*B(:,:,1), so size(A(:,:,1),2) == size(B(:,:,1),1), or either A(:,:,1) is a scalar or B(:,:,1) is a scalar. In the other dimensions, the sizes of A and B should be eqaal, size(A,n) == size(B,n), for n>2, or either ndims(A)<n or ndims(B)<n, or either size(A,n)==1 or size(B,n)==1, so one of them is a scalar.
Write a function mtimesm that does this, and ask Mathworks to include it in the elmat toolbox of the Next Release.
Solution Stats
Problem Comments
-
4 Comments
The 5th case should be: C_correct = cat(3,A(:,:,1)*B,A(:,:,2)*B,A(:,:,3)*B); ??
I gave the solution which passes all given test cases, but I am sure it will fail, if there are multiple combinations of sizes of A and B.
I believe, to get a full-proof solution, more test cases are needed. Or such solution can work for limited combination of sizes of multidimensional matrices to be multiplied.
José Ramón, You are absolutely right. I will fix it.
Have a look in 20b! :)
Solution Comments
Show commentsProblem Recent Solvers27
Suggested Problems
-
Find all elements less than 0 or greater than 10 and replace them with NaN
15599 Solvers
-
2964 Solvers
-
298 Solvers
-
Calculate the Number of Sign Changes in a Row Vector (No Element Is Zero)
756 Solvers
-
Find out sum and carry of Binary adder
1528 Solvers
More from this Author31
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!