Vector Matrix multiplication (Row wise)

134 vues (au cours des 30 derniers jours)
Kamuran
Kamuran le 16 Sep 2015
Commenté : Noah Tang le 28 Oct 2019
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

Réponse acceptée

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

Plus de réponses (3)

Vladimir Kazei
Vladimir Kazei le 9 Oct 2017
Modifié(e) : Vladimir Kazei le 9 Oct 2017
L = L .* V;

seif seif
seif seif le 26 Jan 2018
Modifié(e) : seif seif le 26 Jan 2018
I'd suggest a faster version than the above methods:
L = L .* v(:, ones(N,1));
  1 commentaire
Noah Tang
Noah Tang le 28 Oct 2019
Could you explain that why does this indexing trick work?

Connectez-vous pour commenter.


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

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by