Multiply a 3D matrix with a 2D matrix

As a personal preference, I like my code to be as succinct and readable as possible.

Here’s what I would have done, though it doesn’t meet your ‘no-loops’ requirement:

for m = 1:C

    Z(:,:,m) = X(:,:,m)*Y;

end

This results in an A x D x C matrix Z.

And of course, you can always pre-allocate Z to speed things up by using Z = zeros(A,D,C);.

Leave a Comment