Vector Matrix multiplication (Row wise)

77 views (last 30 days)
Kamuran
Kamuran on 16 Sep 2015
Commented: Sanders on 17 Dec 2024
Hi, I need to multiply each row of very large matrix with a row of corresponding vector. I don't really want to use for loop for that, i.e.,
N=15000;
L=rand(N,N); V=rand(N,1);
for i=1:1:N
L(i,:)=V(i)*L(i,:);
end
is it possible to do this in vectorized way?
Thank you
Erdem

Accepted Answer

Thorsten
Thorsten on 16 Sep 2015
L = L.*repmat(V, [1 N]);

More Answers (3)

Vladimir Kazei
Vladimir Kazei on 9 Oct 2017
Edited: Vladimir Kazei on 9 Oct 2017
L = L .* V;

seif seif
seif seif on 26 Jan 2018
Edited: seif seif on 26 Jan 2018
I'd suggest a faster version than the above methods:
L = L .* v(:, ones(N,1));
  2 Comments
Noah Tang
Noah Tang on 28 Oct 2019
Could you explain that why does this indexing trick work?
Sanders
Sanders on 17 Dec 2024
Vladimir Kazei's version was significantly faster on my computer.

Sign in to comment.


James Tursa
James Tursa on 16 Sep 2015
L = bsxfun(@times,L,V);

Community Treasure Hunt

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

Start Hunting!