multiply element of a row vector (A) by corresponding row of matrix (B) and sum
2 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Star Strider
2015-9-3
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).
更多回答(1 个)
Matt J
2015-9-3
C=A(:).*sum(B,2);
2 个评论
Matt J
2015-9-3
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.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!