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].
어떻게 원래 * 작업만큼 효율적이 작업을 수행 할 수 있습니까?
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].
어떻게 원래 * 작업만큼 효율적이 작업을 수행 할 수 있습니까?
가장 좋은 방법은 bsxfun
과 sum
을 결합하는 것입니다.
c = sum(bsxfun(@plus, a, b.'), 1);
% 10 14
bsxfun
호출 a
의 1 행 a
의 두 번째 행에있는 모든 요소 b
번째 항목 등의 모든 요소 b
의 첫 번째 엔트리를 .. 추가
bsxfun(@plus, a, b.')
% 4 6
% 6 8
그런 다음 sum
의 응용 프로그램은 열을 요약합니다. 다음
가 a
임의 크기 b
들어, 그것을 할 수
c = bsxfun(@plus, sum(a,2), sum(b,1));
이 첨가의 결합 법칙 이용한다 : 제 a
및 b
의 각 열의 각 행의 합을 계산을 모든 pairwise 추가를 계산합니다.
감사합니다. 사실, c = sum (bsxfun (@plus, a, b. '), 2); 나에게 내가 원하는 것을 정확하게 준다. –