MATLAB: Elementwise Multiply Array by Vector without repmat or loop

elementwise multiplicationmultiply array by vectorrepmat

I would like to do an elementwise multiplication of an array by a column vector. Normally to do this, I would use repmat to get the vector to be the same size as the array and then use .* . However, with very large arrays, I would like to avoid using repmat (because of memory issues). A loop is not an option either because it's too slow. Could you please let me know if there's another way to do this?
e.g., A = [1; 0; 3] and B = [1 4 4 5; 9 4 9 10; 10 9 3 5] so A is 3 x 1 and B is 3 x 4. I want to multiply each column of B by A. I'd normally do the following: repmat(A, 1, 4) .* B However, I was wondering if there was an alternative that didn't use repmat.

Best Answer

bsxfun(@times,A,B)