2011-12-25 26 views
6

¿Cómo puedo extraer un campo específico de cada elemento de una matriz Matlab struct?Cómo cortar una matriz de estructuras?

>> clear x 
>> x(1).a = 6; 
>> x(2).a = 7; 

me gustaría una matriz que contiene 6 y 7. Ni x(:).a ni x.a hacer lo que quiera.

>> x(:).a 

ans =  

    6 


ans = 

    7 

Respuesta

9

No hay problema - sólo tiene que utilizar:

arr = [x.a]; 

Será concat todos los valores que necesita. Si usted tiene un conjunto de datos más complejos, puede utilizar los brazales rizado:

b(1).x = 'John'; 
b(2).x = 'Doe'; 
arr = {b.x}; 
0

Lamentablemente, estoy casi seguro de que MATLAB no tiene buena manera de hacer lo que quiere. Tendrás que usar un bucle for para construir una nueva matriz, o bien volver atrás y rediseñar tus estructuras de datos. Por ejemplo, es posible que pueda utilizar una estructura de matrices en lugar de una matriz de estructuras.

0

Para una matriz multidimensional, es necesario

reshape([x.a], size(x)) 
Cuestiones relacionadas