【问题标题】:Duplicate the first row and the first column of a matrix复制矩阵的第一行和第一列
【发布时间】:2019-04-15 00:50:27
【问题描述】:

我有一个 3*3 矩阵 A

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

我只想复制此矩阵的第一行和第一列。它应该看起来像

  1 1 2 3

  1 1 2 3

  4 4 5 6

  7 7 8 9

谁能告诉我如何在matlab中做到这一点

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    我认为这是仅使用索引的好方法

    A([1, 1:end], [1, 1:end])
    

    【讨论】:

    • 这是一个非常优雅的答案,我会记住这种方法。虽然我猜仍然有一个连接用于获取下标向量^^
    【解决方案2】:

    您可以通过连接原始矩阵的不同部分来做到这一点:

    B=[A(1) A(1,:);A(:,1) A];
    

    在这个表达式中,A(1) 是 A 的左上角元素,A(1,:) 是第一行,A(:,1) 是第一列。

    请参阅colon operator 上的文档。

    【讨论】:

      【解决方案3】:

      在下面的代码中,A 是你的起点,我相信 E 是你想要达到的目标。

      你当然可以将所有的中间表达式组合起来,一步完成最终的结果。

      A= [1 2 3; 4 5 6; 7 8 9]
      B= A(1:3,1:1)
      C= [B A]
      D= C(1:1,1:4)
      E= [D;C]
      

      【讨论】:

      • 1:3 可以只是:,然后1:4 也可以只是:
      【解决方案4】:

      游戏有点晚了,但值得回答。您可以为此使用padarray

      B = padarray(A,[1 1],'replicate','pre')
      

      如果您想添加的不仅仅是单个第一个和列,它是一个单行且更通用...

      【讨论】:

        猜你喜欢
        • 2021-12-04
        • 1970-01-01
        • 1970-01-01
        • 2020-12-27
        • 1970-01-01
        • 2015-02-19
        • 2015-06-30
        • 1970-01-01
        • 2014-08-12
        相关资源
        最近更新 更多