Multiplying matrices of different sizes

79 views (last 30 days)
Is there a compact way to multiply matrices of different sizes?
I would like to multiply the elements of a 4D 10x29x34x28 matrix by the elements in a 10x1 matrix (i.e. the multiplier only differs over the first dimension).
At the moment I have just constructed a 4D matrix out of the 10x1 matrix, but that's a little slow. I am hoping that there is a more graceful solution.
  1 Comment
Image Analyst
Image Analyst on 1 Jun 2015
That's only 276080 elements - it should be faster than a greased cheetah on steroids. How long is it taking? What is your current method?

Sign in to comment.

Accepted Answer

Stephen23
Stephen23 on 1 Jun 2015
Edited: Stephen23 on 1 Jun 2015
It seems that you are looking for element-wise multiplication, with singleton dimension expansion... which is what bsxfun is for:
>> A = rand(10,29,34,28);
>> B = (1:10)';
>> C = bsxfun(@times,A,B);
>> size(C)
ans =
10 29 34 28

More Answers (0)

Categories

Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!