2016-07-04 6 views
4

In Python, ein 3-Tupel (zum Beispiel) kann "ausgepackt" in drei separate Variablen durch Zuweisung sein:Wie man eine Vektorvariable in mehrere Variablen "entpackt"?

In [1]: triplet = (1, 'two', (True, True, True)) 

In [2]: first, second, third = triplet 

In [3]: third 
Out[3]: (True, True, True) 

In [4]: second 
Out[4]: 'two' 

In [5]: first 
Out[5]: 1 

Ist es möglich, so etwas wie dies in MATLAB zu tun?

Alles, was ich versucht habe, scheitert. Z.B .:

>> triplet = {1, 'two', [true, true, true]}; 
>> [first second third] = triplet 
Too many output arguments. 

Antwort

5

Sie auf Zellexpansion verlassen können {:} Indizierung, die eine comma-separated list schafft, die drei Ausgangswerte zugeordnet werden können.

[a, b, c] = triplet{:}; 

Wenn triplet eine Matrix statt, so könnte man zunächst auf ein Zellenfeld konvertiert es num2cell verwenden.

triplet = [1, 2, 3]; 
tripletcell = num2cell(triplet); 

[a, b, c] = tripletcell{:}; 
+0

Danke. Ich nehme an, dass "Deal" der allgemeinere der beiden ist, weil es funktionieren würde, selbst wenn "Triplet", sagen wir mal, ein "double (1, 3)" wäre? – kjo

+0

@ kjo Nicht wirklich, Sie müssten jeden Ausgang als ein Eingabeargument für "Deal" bereitstellen. Ich habe ein Beispiel mit numerischen Arrays aktualisiert. – Suever

Verwandte Themen