2012-08-22 14 views
7

Ich habe eine Struktur, die 2 Felder hat: time und pose. Ich habe mehrere Instanzen diese Struktur in einem Array zusammengesetzt, so ein Beispiel hierfür ist:Feld von struct Array in neues Array extrahieren

poses(1) 
    -time = 1 
    -pose = (doesn't Matter) 
poses(2) 
    -time = 2 
    -pose = (doesn't Matter) 
poses(3) 
    -time = 3 
    -pose = (doesn't Matter) 
... 

Nun, wenn ich dieses Motiv:

poses.time 

ich dieses:

ans = 
     1 
ans = 
     2 
ans = 
     3 

Wie kann ich diese Ausgabe nehmen und in einen Vektor einfügen?

Antwort

13

Verwenden Klammern:

timevec=[poses.time]; 

heikel Matlab, ich weiß, ich weiß, Sie müssen nur diesen einen erinnern, wenn Sie mit structs arbeiten;)

+0

Was ist mit String-Werten? Wenn posen.time ist ans = "1" ans = "2" ans = "3", würde timevec = [posen.time] "123" ergeben. Gibt es eine Möglichkeit, das zu beheben? – zml

+1

@zml '" 123 "' ist bereits ein Array, versuchen Sie es zu indizieren und sehen Sie selbst. Wenn Sie sie wirklich trennen möchten, benötigen Sie ein Zellen-Array: 'timevec = {points.time}'. Weitere Informationen zu String-Arrays finden Sie unter [hier] (http://nl.mathworks.com/help/matlab/ref/strings.html). –

+0

Was ist, wenn 'Posen' 2d ist? – Eric

1

Für die Fälle, dass die Feldwerte sind Vektoren (von gleicher Größe), und das Ergebnis in einer Matrixform benötigen:

posmat = cell2mat({poses.pose}'); 

dass jeder pose Vektor in einer anderen Zeile von posmat kehrt .