【问题标题】:Matlab multiply each row in matrix by different numberMatlab将矩阵中的每一行乘以不同的数字
【发布时间】:2016-10-19 01:24:14
【问题描述】:

假设我有一个矩阵:

A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12];

有没有办法相乘:
第 1 行,第 1 行
2 行 2 行
第 3 行,第 3 行
等等?

我可以用 for 循环来做到这一点,但是如果他们希望我们使用矩阵的分配。 在实际赋值中A填充的是随机数,但每一行都是连续相乘的。

谢谢,非常感谢任何帮助

【问题讨论】:

  • 看看bsxfun 函数 - 它完全符合您的要求。

标签: matlab matrix vector multiplication


【解决方案1】:

你只需要像这样将一个对角矩阵乘以 A。

A = [ 1 2 3 ; 4 5 6 ; 7 8 9 ; 10 11 12];
disp(diag([1 2 3 4]) * A);

 1     2     3
 8    10    12
21    24    27
40    44    48

【讨论】:

    【解决方案2】:

    您可以使用bsxfun 轻松快速地完成此操作

    out = bsxfun(@times, [1 2 3 4].', A)
    

    在较新版本的 MATLAB(R2016b 和更新版本)中,您实际上可以将 bsxfun 简单地替换为 *

    out = [1 2 3 4].' * A;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-22
      相关资源
      最近更新 更多