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);给我正是我想要的。 –