【问题标题】:Matlab - Append a new Column to a matrixMatlab - 将新列附加到矩阵
【发布时间】:2016-02-23 03:19:33
【问题描述】:

我是 Matlab 世界的菜鸟,我想在矩阵中所有行的开头附加一个值。

mat =

16     2     3    13
 5    11    10     8
 9     7     6    12
 4    14    15     1

myval = 98;

我想得到一个像这样的矩阵:

mat =

98   16     2     3    13
98    5    11    10     8
98    9     7     6    12
98    4    14    15     1

我该怎么办?

我知道我们可以使用像[a b] 这样的水平连接,但这里myvalmat 的维度不同

我是这样做的:

m  = ones(4,1)*98

m =

98
98
98
98

mat = [m mat]

 mat =

98    16     2     3    13
98     5    11    10     8
98     9     7     6    12
98     4    14    15     1

有没有更好的办法?

谢谢

【问题讨论】:

  • 你使用的方法是完全有效的;但是请注意,您不需要将新列分配给它自己的参数m(除非您想重新使用它); mat = [ones(4,1)*98 mat] 也可以。另一种选择是使用repmat,即mat = [repmat(98,4,1) mat]

标签: matlab matrix


【解决方案1】:

另一种单行解决方案可能是:

mat=[repmat(myval,size(mat,1),1) mat]

通过使用size(mat,1),您可以自动处理行数。

希望这会有所帮助。

卡普拉'

【讨论】:

  • 感谢@il_raffa 的一般回答
【解决方案2】:

我认为你做的很好。您可以通过组合语句将其单行:

mat = [(myval*ones(4,1)) mat];

【讨论】:

    【解决方案3】:

    您可以将转置 (') 与水平连接(horzcat[x y])用作:

    >> z = magic(4)
    z =
        16     2     3    13
         5    11    10     8
         9     7     6    12
         4    14    15     1
    >> c = [98 98 98 98]
    c =
        98    98    98    98
    >> [c' z]
    ans =
        98    16     2     3    13
        98     5    11    10     8
        98     9     7     6    12
        98     4    14    15     1
    >> horzcat(c', z)
    ans =
        98    16     2     3    13
        98     5    11    10     8
        98     9     7     6    12
        98     4    14    15     1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2019-03-10
      • 2016-11-14
      • 2013-09-22
      相关资源
      最近更新 更多