web-dev-qa-db-fra.com

Comment ajouter un vecteur à Octave?

Chaque fois que je dois ajouter un vecteur, je le fais.

A = [2 3 4]
A = [A; 3 4 5]

Je me demandais s'il y avait des fonctions intégrées pour cela ou des façons plus élégantes de le faire dans Octave.

28
Aditya

Les fonctions intégrées sont cat, vertcat et horzcat, trouvées aux pages 380-381 de la documentation Octave (v 3.8). Ils sont essentiellement équivalents à ce que vous avez cependant.

octave:5> A = [2 3 4];
octave:6> A = [A; 3 4 5]
A =

   2   3   4
   3   4   5

octave:7> B = [4 5 6];
octave:8> B = vertcat(B,[5 6 7])
B =

   4   5   6
   5   6   7

Une autre manière (encore équivalente) serait d'utiliser directement l'indexation matricielle (voir page 132)

octave:9> C = [6 7 8];
octave:10> C(end+1,:) = [7 8 9]
C =

   6   7   8
   7   8   9
26
user3288829

Je pense que le plus efficace est d'utiliser cette fonction intégrée que vous avez postée dans la question (je m'appuie sur d'autres experts en octave je ne l'ai pas vérifié complètement; la norme est que les opérations matricielles sont généralement plus rapides que celles itératives, Je ne sais pas encore quel est le mécanisme interne qui permet d'activer cela). Parce qu'un vecteur est un type de matrice, cette solution fonctionnera également pour les vecteurs concaténants (de tout type):

vector = [vector ; value]
3
sivi