multiply element of a row vector (A) by corresponding row of matrix (B) and sum
    4 views (last 30 days)
  
       Show older comments
    
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,
0 Comments
Accepted Answer
  Star Strider
      
      
 on 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).
More Answers (1)
  Matt J
      
      
 on 3 Sep 2015
        C=A(:).*sum(B,2);
2 Comments
  Matt J
      
      
 on 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.
See Also
Categories
				Find more on Matrix Indexing in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

