multiply element of a row vector (A) by corresponding row of matrix (B) and sum

3 vues (au cours des 30 derniers jours)
Hi
I am currently looking for an assistance on the way to perform such calculation:
A=[0 1 2 3];B=[1 2;3 4;5 6;7 8];
0*1 + 0*2
C= 1*3 + 1*4
2*5 + 2*6
3*7 + 3*8
==> C=[0;7;22;45]
I had a look at
bsxfun(@times,,)
but it can't be useful here (unfortunately).
Best,

Réponse acceptée

Star Strider
Star Strider le 3 Sep 2015
This works:
C = sum(bsxfun(@times, A', B),2);
To get bsxfun to work here, you have to transpose ‘A’ so that the two arguments have a dimension in common. Then sum across the columns (dimension 2).
  2 commentaires
Isma
Isma le 3 Sep 2015
Thanks a lot for the hint regarding the transpose of A. Cheers.

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 3 Sep 2015
C=A(:).*sum(B,2);
  2 commentaires
Isma
Isma le 3 Sep 2015
Thanks a lot too. It's indeed interesting to know alternative solutions. Cheers.
Matt J
Matt J le 3 Sep 2015
I had a look at bsxfun(@times,,) but it can't be useful here (unfortunately).
It's actually fortunate that you can avoid bsxfun. If B is an M x N matrix, then using bsxfun will require M*N multiplications, whereas with what I propose, you only do M multiplications.

Connectez-vous pour commenter.

Catégories

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

Tags

Aucun tag saisi pour le moment.

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by