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,

채택된 답변

Star Strider
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
Matt J 2015년 9월 3일
C=A(:).*sum(B,2);
  댓글 수: 2
Isma
Isma 2015년 9월 3일
Thanks a lot too. It's indeed interesting to know alternative solutions. Cheers.
Matt J
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 CenterFile Exchange에서 Matrix Indexing에 대해 자세히 알아보기

태그

아직 태그를 입력하지 않았습니다.

제품

Community Treasure Hunt

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

Start Hunting!

Translated by