2016-07-14 93 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每列的每行的总和,然后计算所有成对添加。