MATLAB: Multiplying matrices of different sizes

matrix manipulation

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 10×1 matrix (i.e. the multiplier only differs over the first dimension).
At the moment I have just constructed a 4D matrix out of the 10×1 matrix, but that's a little slow. I am hoping that there is a more graceful solution.

Best Answer

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