20

我有一个A矩阵

1 2 3 4 5
6 7 8 9 0

我想用一排来扩展它以获得

1 1 1 1 1
1 2 3 4 5
6 7 8 9 0 

我用

col_size = size(A, 2); 
ones_row = ones(1, col_size);

如何将我的添加ones_row到矩阵中?

4

3 回答 3

42

一旦你拥有A并且ones_row你做了:

[ones_row; A]

这将返回以下内容。

1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
于 2011-11-06T03:51:11.050 回答
2

我可能会按照上一个答案中的建议进行操作,但是在某些情况下(当矩阵大小变得非常大时),对内存更友好的解决方案是预先分配正确大小的矩阵并使用索引将现有值放入正确的地方:

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');
于 2018-06-28T13:38:55.603 回答
-1

我可以给出一个适用于任何矩阵的解决方案。

假设你的矩阵是A, A 是m*n

n = size(A,2)

out = [ones(1,n);A]

此解决方案适用于任何矩阵。

于 2018-06-28T12:28:38.700 回答