2012-08-22 8 views
7

Tengo una estructura, que tiene 2 campos: time y pose. Tengo varias instancias de este struct compuesto en una matriz, por lo que un ejemplo de esto es:Extraiga el campo de la matriz struct a la nueva matriz

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

Ahora cuando Imprimir esto:

poses.time 

me sale esto:

ans = 
     1 
ans = 
     2 
ans = 
     3 

¿Cómo puedo tomar esa salida y ponerla en un vector?

Respuesta

13

Use paréntesis:

timevec=[poses.time]; 

MATLAB complicado, lo sé, lo sé, vas a tener que recordar éste si se trabaja con estructuras;)

+0

¿Qué pasa con los valores de cadena? si poses.time es ans = "1" ans = "2" ans = "3", timevec = [poses.time] daría "123". ¿Hay alguna manera de arreglar esto? – zml

+1

@zml '" 123 "' ya es una matriz, intente indexarla y compruébelo usted mismo. Si los quieres realmente separados, necesitarás una matriz de celdas: 'timevec = {poses.time}'. Consulte [aquí] (http://nl.mathworks.com/help/matlab/ref/strings.html) para obtener más información sobre matrices de cadenas –

+0

¿Y si 'poses' es 2d? – Eric

1

Para los casos en que los valores de los campos son vectores (de mismo tamaño) y que necesita el resultado en forma de matriz:

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

que devuelve cada pose vector en una fila diferente de posmat .

Cuestiones relacionadas