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].
我怎樣才能做到這一點的效率是原來的*操作?
我想讓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
電話增加了b
到a
第一排和b
的a
第二行中的第二項的所有元素等中的所有元素中的第一項..
bsxfun(@plus, a, b.')
% 4 6
% 6 8
然後sum
的應用,總結列。
對於a
和任意大小的b
,這是可以做到如下:
c = bsxfun(@plus, sum(a,2), sum(b,1));
這利用另外的締合性能:首先計算的a
和b
每列的每行的總和,然後計算所有成對添加。
謝謝!其實,c = sum(bsxfun(@plus,a,b。'),2);給我正是我想要的。 –