在矩阵中添加一行

时间:2011-11-06 03:47:15

标签: matlab matrix concatenation row addition

我有一个矩阵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添加到矩阵中?

3 个答案:

答案 0 :(得分:39)

完成Aones_row之后:

[ones_row; A]

返回以下内容。

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

答案 1 :(得分:2)

我可能会按照in the previous answer的建议进行操作,但是在某些情况下(当矩阵大小变得很大时),一种对内存更友好的解决方案是预先分配正确大小的矩阵并使用索引来放置现有值放在正确的位置:

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

之所以说这对内存更友好,是因为当我们创建一行内存时,我们需要为一个向量分配内存,然后当我们进行连接时,我们需要再次分配内存。串联的结果。当使用索引时,无需分配中间向量。在此示例中,它并不是很重要,但是对于较大的矩阵或执行了数千次的操作而言,可能意义重大。


Image Processing Toolbox-padarray中还有一个有用的功能:

A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = padarray(A,[1 0],1,'pre');

答案 2 :(得分:-1)

我可以提供适用于任何矩阵的解决方案。

假设您的矩阵为public function Sizes() { return $this->belongsToMany(Size::class, 'size_products'); } public function Colors() { return $this->belongsToMany(Color::class, 'color_products'); } ,A为A

m*n

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