【问题标题】:Matrix multiplication using MATLAB使用 MATLAB 进行矩阵乘法
【发布时间】:2011-02-18 06:47:31
【问题描述】:

如果我有以下矩阵:

a=[10   1   0   1   1
   50   1   0   0   0
   60   0   0   0   1]

如何将矩阵 [10 50 60]' 中的第一列作为向量乘法与矩阵的其余部分相乘并得到以下结果:

b=[10  10  0  10  10
   50  50  0   0   0
   60  0   0   0   60]

【问题讨论】:

    标签: matlab


    【解决方案1】:

    为此,bsxfun是您所需要的:

    b = [a(:,1) bsxfun(@times,a(:,2:end),a(:,1))]
    

    希望这会有所帮助,

    一个。

    【讨论】:

    • 就我而言,这应该是公认的答案+1
    【解决方案2】:

    如果您真的想将其构建为矩阵乘法,例如:

    b = [a(:,1), diag(a(:,1))*a(:,2:end)]
    

    应该可以工作(不过,我已经有一段时间没有做任何 matlab 了)。

    【讨论】:

    • 您的答案似乎是最直接的答案,也与线性代数有牢固的联系。我太仓促地浏览了答案,如果我一见钟情就认识到你的答案的优越性,我什至不会发布我自己的答案。
    【解决方案3】:
    firstcol = a(:,1);
    b = [firstcol, a(:,2:end) .* repmat(firstcol,1,size(a,2)-1)];
    

    (虽然这确实不是我们通常所说的向量乘法或矩阵乘法。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多