J'ai une matrice A
comme
1 2 3 4 5
6 7 8 9 0
et je veux l'étendre avec une rangée de ceux pour obtenir
1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
Je crée la rangée de ceux avec
col_size = size(A, 2);
ones_row = ones(1, col_size);
Comment puis-je ajouter mon ones_row
à la matrice?
Une fois que vous avez A
et ones_row
tu fais:
[ones_row; A]
Cela renvoie ce qui suit.
1 1 1 1 1
1 2 3 4 5
6 7 8 9 0
Je le ferais probablement comme suggéré dans la réponse précédente , cependant dans certains cas (lorsque les tailles de matrice deviennent très grandes), une solution plus conviviale en mémoire serait de préallouer une matrice de la taille correcte et d'utiliser indexation pour mettre les valeurs existantes au bon endroit:
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 raison pour laquelle je dis que cela est plus convivial en mémoire est parce que lorsque nous créons une ligne d'unités, nous devons allouer de la mémoire pour un vecteur, puis lorsque nous concaténons, nous devons à nouveau allouer de la mémoire pour le résultat de la concaténation. Lorsque nous utilisons l'indexation, il n'est pas nécessaire d'allouer un vecteur intermédiaire. Ce n'est pas vraiment important dans cet exemple, mais peut être assez important pour des matrices plus grandes ou des opérations effectuées des milliers de fois.
Il y a aussi une fonction utile dans la Boîte à outils de traitement d'image - padarray
:
A = [ 1 2 3 4 5; 6 7 8 9 0 ];
B = padarray(A,[1 0],1,'pre');