代码之家  ›  专栏  ›  技术社区  ›  Aditya Vikas Devarapalli

Matlab-将新列附加到矩阵

  •  1
  • Aditya Vikas Devarapalli  · 技术社区  · 10 年前

    我是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] 但在这里 myval mat 尺寸不同

    我这样做:

    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
    

    有更好的方法吗?

    非常感谢。

    3 回复  |  直到 10 年前
        1
  •  2
  •   il_raffa    10 年前

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

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

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

    希望这有所帮助。

    卡普拉

        2
  •  1
  •   gariepy    10 年前

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

    mat = [(myval*ones(4,1)) mat];
    
        3
  •  0
  •   Irshad Bhat    10 年前

    你可以使用转置( ' )具有水平连接( 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