【问题标题】:how can I add a vector to a matrix in matlab?matlab中如何将向量添加到矩阵中?
【发布时间】:2012-06-17 07:48:17
【问题描述】:

如何在 Matlab 中将向量添加到矩阵中,以将向量的 i 索引添加到 i 行中的所有成员?

例如:

A = [1 2 3;
     4 5 6;
     6 7 8]
v = [1;
     2;
     3]

要求的结果是:

[2 3 4;
 6 7 8;
 9 10 11]

非常感谢。

【问题讨论】:

  • 您的意思是向矩阵的特定行添加向量吗??
  • 您的意思是 1) 在 nxm 矩阵的末尾添加一个 nx1 数组,然后扩大矩阵 2) 将这样的数组插入矩阵的中间,扩大矩阵 3) 覆盖该数组,保持相同大小的矩阵 4) 你是否能够预先分配一个零矩阵,因此可以做 3) 无论如何(它会比增加矩阵更快)

标签: matlab


【解决方案1】:

你可以使用bsxfun:

B=bsxfun(@plus,A,v);

【讨论】:

    【解决方案2】:

    只是为了好玩:

    A + v(:,[1 1 1]);
    

    【讨论】:

    • 老实说,这是我最喜欢的答案。我是 MATLAB/Octave 初学者,使用这个(或使用 one() 的版本)让我的生活变得更轻松。谢谢。
    【解决方案3】:

    bsxfun 的替代方法是使用 repmat 并重复列向量 v 的次数与 A 的列数一样多:

    A = [1 2 3; 4 5 6; 6 7 8];
    v = [1; 2; 3]
    
    A = A + repmat(v,1,3);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-06
      • 2016-11-11
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多