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

2 visualizaciones (últimos 30 días)
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,

Respuesta aceptada

Star Strider
Star Strider el 3 de Sept. de 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).

Más respuestas (1)

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

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Aún no se han introducido etiquetas.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by