如何将一列/一行插入矩阵?

ece*_*ulm 54 octave

假设我们有一个像3x3矩阵

b = 2 * eye(3);
ans =

2   0   0
0   2   0
0   0   2
Run Code Online (Sandbox Code Playgroud)

我想要像3x4矩阵一样

1   2   0   0
1   0   2   0
1   0   0   2
Run Code Online (Sandbox Code Playgroud)

获得它的最佳方法是什么?

car*_*l_h 92

一个简单的内联方式是:

b = [ones(size(b, 1), 1) b];

  • 要添加一行:b = [ones(1,columns(b)); b] (8认同)
  • 要添加列:c = [ones(rows(c),1),c] (3认同)
  • Octave有`rows()`,如果你不关心像我这样的Matlab. (2认同)

小智 18

在GNU Octave中:

将两个矩阵水平连接在一起:用矩阵分隔矩阵,
并将结果括在方括号中:

X = [ones(rows(X), 1) X];
Run Code Online (Sandbox Code Playgroud)

更简单的示例:
对一个数字进行粘贴(使用逗号添加水平"Column"元素):

octave:1> [[3,4,5],8]
ans =
   3   4   5   8
Run Code Online (Sandbox Code Playgroud)

使用逗号水平粘贴另一个矩阵(作为附加列):

octave:2> [[3,4,5],[7,8,9]]
ans = 
   3   4   5   7   8   9
Run Code Online (Sandbox Code Playgroud)

使用分号垂直粘贴另一个矩阵(作为附加行):

octave:3> [[3,4,5];[7,8,9]]
ans =
   3   4   5
   7   8   9
Run Code Online (Sandbox Code Playgroud)


ece*_*ulm 7

一种方法是:

function [result] = prependOnes(matrix)
  result = [ones(rows(matrix),1) matrix];
end

prependOnes(b)
Run Code Online (Sandbox Code Playgroud)