我有一个像这样的矩阵 A
1 2 3 4 5
6 7 8 9 0
我想要在它的基础上添加一行1以获得
1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
我使用以下代码创建了一个全为1的行:
col_size = size(A, 2);
ones_row = ones(1, col_size);
如何将我的ones_row
添加到矩阵中?
我有一个像这样的矩阵 A
1 2 3 4 5
6 7 8 9 0
我想要在它的基础上添加一行1以获得
1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
我使用以下代码创建了一个全为1的行:
col_size = size(A, 2);
ones_row = ones(1, col_size);
如何将我的ones_row
添加到矩阵中?
一旦你拥有A
和 ones_row
,你可以执行以下操作:
[ones_row; A]
这将返回以下内容。
1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
我会按照之前答案中所建议的方式来完成,但在某些情况下(当矩阵大小变得非常大时),更节省内存的解决方案是预先分配正确大小的矩阵,并使用索引将现有值放置在正确的位置:
A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = ones(size(A) + [1,0]); % Create an array of ones that is one row longer
B(2:end,:) = A; % Replace the elements of B with elements from A
padarray
:A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = padarray(A,[1 0],1,'pre');
A
,A是m*n
。n = size(A,2)
out = [ones(1,n);A]
这个解决方案适用于任何矩阵。
A = rand(5,6);
n = size(A,2);
out = [ones(n,1);A];
使用vertcat时出错。要连接的数组维度不一致。 - Sardar Usamasize(A, 2)
和ones(1, ..);
- 这就是为什么Sardar说你的答案没有任何新内容。 - Dev-iL
[ e1 ; e2 ]
被翻译为vertcat
,而[ e1 e2 ]
或[ e1, e2 ]
则被翻译为horzcat
。同时,学习使用cat
可以在任意维度上进行显式拼接,这也是非常有用的。 - Dev-iL