2016-07-14 115 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電話增加了ba第一排和ba第二行中的第二項的所有元素等中的所有元素中的第一項..

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每列的每行的總和,然後計算所有成對添加。