2014-06-13 17 views
21

Ogni volta che devo aggiungere a un vettore lo sto facendo.Come posso aggiungere a un vettore in Octave?

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

Mi chiedevo se ci sono delle funzioni incorporato per questo o più eleganti modi per farlo in ottava.

+1

Questa è la funzione built ... – sivi

risposta

21

Le funzioni integrate sono cat, vertcat e horzcat, disponibili alle pagine 380-381 di Octave documentation (v 3.8). Sono essenzialmente equivalenti a quello che hai però.

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 

Un altro modo (di nuovo equivalente) sarebbe utilizzare direttamente matrice di indicizzazione (vedi pagina 132)

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

    6 7 8 
    7 8 9 
1

Penso che la più efficace è quello di utilizzare questo costruito in funzione che avete pubblicato in la domanda (mi affido ad altri esperti in ottava non l'ho verificato completamente, lo standard è che le operazioni con le matrici sono generalmente più veloci di quelle iterative, non so quale meccanismo interno permetta a questo di essere abilitato ancora). Poiché un vettore è un tipo di matrice, questa soluzione funziona per concatinating vettori (di qualsiasi tipo) troppo:

vector = [vector ; value] 
Problemi correlati