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

2 Ansichten (letzte 30 Tage)
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,

Akzeptierte Antwort

Star Strider
Star Strider am 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).

Weitere Antworten (1)

Matt J
Matt J am 3 Sep. 2015
C=A(:).*sum(B,2);
  2 Kommentare
Isma
Isma am 3 Sep. 2015
Thanks a lot too. It's indeed interesting to know alternative solutions. Cheers.
Matt J
Matt J am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Tags

Noch keine Tags eingegeben.

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by