假设我们有一个像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];
小智 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)
一种方法是:
function [result] = prependOnes(matrix)
result = [ones(rows(matrix),1) matrix];
end
prependOnes(b)
Run Code Online (Sandbox Code Playgroud)