2016-07-14 2 views
1

MATLAB에서 행렬 곱셈을 수행하고 싶습니다. 여기서 모든 곱셈 연산은 더하기 연산으로 바뀝니다. 여기 matlab에서 행렬 곱셈을 수정하는 방법

은 예입니다

a = [3,4; 5,6]; 
b = [1;2]; 

c = modified_multiplication(a,b); % = [3+1+4+2 ; 5+1+6+2] = [10 , 14]. 

어떻게 원래 * 작업만큼 효율적이 작업을 수행 할 수 있습니까?

답변

1

가장 좋은 방법은 bsxfunsum을 결합하는 것입니다.

c = sum(bsxfun(@plus, a, b.'), 1); 
% 10 14 

bsxfun 호출 a의 1 행 a의 두 번째 행에있는 모든 요소 b 번째 항목 등의 모든 요소 b의 첫 번째 엔트리를 .. 추가

bsxfun(@plus, a, b.') 
% 4 6 
% 6 8 

그런 다음 sum의 응용 프로그램은 열을 요약합니다. 다음

+0

감사합니다. 사실, c = sum (bsxfun (@plus, a, b. '), 2); 나에게 내가 원하는 것을 정확하게 준다. –

1

a 임의 크기 b 들어, 그것을 할 수

c = bsxfun(@plus, sum(a,2), sum(b,1)); 

이 첨가의 결합 법칙 이용한다 : 제 ab의 각 열의 각 행의 합을 계산을 모든 pairwise 추가를 계산합니다.