【问题标题】:modifying matrix multiplication in matlab在matlab中修改矩阵乘法
【发布时间】:2016-07-14 14:28:09
【问题描述】:

我想让 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 matrix multiplication


    【解决方案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的应用,对各列求和。

    【讨论】:

    • 谢谢!实际上, c = sum(bsxfun(@plus, a, b.'), 2);给了我我想要的。
    【解决方案2】:

    对于任意大小的ab,可以如下进行:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 2012-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多