修改matlab中的矩阵乘法

时间:2016-07-14 14:28:10

标签: matlab matrix multiplication

我想让MATLAB执行矩阵乘法,其中所有乘法运算都被加号运算取代。

以下是一个例子:

a = [3,4; 5,6];
b = [1;2];

c = modified_multiplication(a,b); %  = [3+1+4+2 ; 5+1+6+2] =  [10 , 14].

我怎样才能像原始*操作一样高效?

2 个答案:

答案 0 :(得分:1)

最好的办法是将bsxfunsum合并。

c = sum(bsxfun(@plus, a, b.'), 1);
%   10  14

bsxfun调用将b的第一个条目添加到a的第一行中的所有元素,将b的第二个条目添加到第二行中的所有元素一行a等等。

bsxfun(@plus, a, b.')
%   4   6
%   6   8

然后sum的应用,对列进行求和。

答案 1 :(得分:1)

对于任意大小的ab,可按以下方式完成:

c = bsxfun(@plus, sum(a,2), sum(b,1));

这会利用加法的关联属性:首先计算a的每一行和b的每一列的总和,然后计算所有成对加法。