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
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 commentsGroup

Operations
- 32 Problems
- 14 Finishers
- modular arithmetic
- Sum the 'edge' values of a matrix
- Subtract integers and add doubles
- Multiplication
- Let's get back to school, and create multiplication tables
- Make an N-dimensional Multiplication Table
- Mmm! Multi-dimensional Matrix Multiplication
- Accurate Division
- Number of even divisors of a given number
- Raise a polynomial to a power
- Array ex-OR
- Airline Ticket Mod7 Checksum
- Determinant without using det()
- Calculate the hypotenuse of a right triangle without using ^ and sqrt ()
- Calculate sin(x) without sin(x)
- Calculate cosine without cos(x)
- Negative without '-'
- calculate PI without using pi function
- Church Encoding
- Concatenated roots
- Product of Each Column
- Perl 1: push
- Vector push
- Vector pop
- Shuffle
- Please check the last row
- Converting Decimal to Binary
- Temperature Conversion Utility
- Temperature Conversion Utility (Strings)
- Calculate the sum of two polynomials
- Moving average (variable kernel length)
- Weighted average
Problem Recent Solvers29
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!