2013-03-13 10 views
5

Octave (/ Matlab) 's Notation für mehrere RückgabehandhabungswerteVektor für Oktaven Auspacken

[a, b] = f(x) 

legt nahe, dass die von f Rückgabewerte (x) in einer Art Reihenvektor sind, und dass Octave unterstützt Vektor Auspacken (wie Pythons Tupel-Entpacken).

Doch wenn ich

setzen
[a, b] = [1, 2] 

ich

error: invalid number of output arguments for constant expression

Hat Oktave Support-Vektor-Auspacken?

Wenn ja, wie lautet die richtige Schreibweise?

Ich kann nichts in der Dokumentation

+0

Die eckigen Klammern ('[]') haben eine etwas andere Bedeutung, wenn die rechte Seite der Zuweisung ein Funktionsaufruf ist. Was willst du genau erreichen? –

+0

Ich habe zwei Vektoren (A und B) Ich möchte gleichzeitig über iterieren. In Python würde ich tun für eine, b in zip (A, B): // Do ein paar Sachen mit a und b – dspyz

Antwort

2

ich nicht testen Octave finden müssen, aber in MATLAB können Sie „entpacken“ Zellen-Arrays.

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

x1 = 
    1 
x2 = 
    2 

Sie können als x = num2cell([1 2]); numerischen Vektor in einer Zelle Array konvertieren.

Ich muss hinzufügen, dass dies für MATLAB ab Version 7.0 funktioniert. Für frühere Version müssen Sie DEAL Funktion verwenden.

+0

Das funktioniert in Octave auch. Vielen Dank. Es scheint immer noch ein wenig wortreich für eine solche gemeinsame Operation – dspyz