2013-03-13 14 views
5

ottava (/ MATLAB) s 'notazione per la movimentazione di ritorno più valorivettore disimballaggio per ottava

[a, b] = f(x) 

suggerisce che i valori restituiti da f (x) sono in una sorta di vettore riga e che Octave supporta vettore disimballaggio (come la tupla-disimballaggio di Python).

Eppure, quando ho messo

[a, b] = [1, 2] 

ottengo

error: invalid number of output arguments for constant expression

supportati da ottava vettore-disimballaggio?

Se è così, qual è la notazione corretta?

non riesco a trovare nulla nella documentazione

+0

Le parentesi quadre ('[]') hanno un significato leggermente diverso quando il lato destro della cessione è una chiamata di funzione. Che cosa vuoi ottenere esattamente? –

+0

ho due vettori (A e B) Desidero iterare contemporaneamente. In python farei per a, b in zip (A, B): // Fai un po 'di roba con aeb – dspyz

risposta

2

Non ho Octave alla prova, ma in MATLAB si può "spacchettare" matrici di celle.

x = {1 2}; 
[x1,x2] = x{:} 

x1 = 
    1 
x2 = 
    2 

È possibile convertire vettore numerico di una matrice di celle come x = num2cell([1 2]);.

Devo aggiungere che questo funziona per MATLAB a partire dalla versione 7.0. Per la versione precedente è necessario utilizzare la funzione DEAL.

+0

che funziona anche in Octave. Grazie. Sembra ancora un po 'prolisso per un'operazione così comune – dspyz