initialize how concatenate array and matlab matrix concatenation row addition

matlab - how - Agregar una fila a una matriz



matlab concat text (3)

Tengo una matriz como

1 2 3 4 5 6 7 8 9 0

Y quiero expandirlo con una fila de unos para conseguir.

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

Creo la fila de unos con

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

¿Cómo puedo agregar mi ones_row a la matriz?


Probablemente lo haría como se sugirió share , sin embargo, en algunos casos (cuando los tamaños de matriz son muy grandes), una solución más amigable con la memoria sería preasignar una matriz del tamaño correcto y usar la indexación para colocar los valores existentes en el lugar correcto:

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

La razón por la que digo que esto es más compatible con la memoria es porque cuando creamos una fila de las que necesitamos para asignar la memoria para un vector, y luego cuando concatenamos necesitamos asignar la memoria nuevamente para el resultado de la concatenación. Cuando usamos la indexación, no hay necesidad de asignar un vector intermedio. No es realmente importante en este ejemplo, pero puede ser bastante importante para matrices más grandes u operaciones realizadas miles de veces.

También hay una función útil en el padarray herramientas de procesamiento de padarray : padarray :

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


Puedo dar una solución que puede funcionar para cualquier matriz.

Supongamos que su matriz es A , A es m*n

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

Esta solución funciona para cualquier matriz.


Una vez que tienes A y ones_row lo haces:

[ones_row; A]

Esto devuelve lo siguiente.

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