How can I multiply the columns of one matrix by another matrix most efficiently?

2 views (last 30 days)
I need to multiply the columns of one matrix by the columns of another matrix element-wise, and I would like to avoid loops. So far, I know that this will accomplish what I want done, but I would like to vectorize it if possible.
A = [1 2 3; 4 5 6; 7 8 9];
B = [1 1 1; 2 2 2; 3 3 3];
j = 1:size(A,2);
for i = 1:size(A, 2) % loop over columns
result(:, i*j) = bsxfun(@times, A(:, i), B);
end
Basically, given 2 MxN matrices my code outputs an MxN^2 matrix. Is there any built in function that will allow me to do this without the loop?
Thanks.

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 12 Jul 2016
Edited: Andrei Bobrov on 12 Jul 2016
reshape(bsxfun(@times,B,permute(A,[1,3,2])),size(A,1),[])

More Answers (1)

Azzi Abdelmalek
Azzi Abdelmalek on 12 Jul 2016
A.*B

Categories

Find more on Operators and Elementary Operations 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!