2011-12-25 27 views
6

Come posso estrarre un campo specifico da ogni elemento di una matrice di Matlab struct?Come tagliare un array struct?

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

mi piacerebbe una matrice contenente 6 e 7. Né x(:).ax.a fare quello che voglio.

>> x(:).a 

ans =  

    6 


ans = 

    7 

risposta

9

Nessun problema - basta usare:

arr = [x.a]; 

Sarà concat tutti i valori di cui avete bisogno. Se si dispone di un insieme di dati più complessi, è possibile utilizzare i bracciali graffe:

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

Purtroppo, sono quasi sicuro che MATLAB non ha un bel modo di fare quello che vuoi. Dovrai utilizzare un ciclo for per costruire un nuovo array, oppure tornare indietro e riprogettare le strutture dati. Ad esempio potresti essere in grado di usare una struct-of-array piuttosto che una matrice di strutture.

0

Per un array multi-dimensionale, è necessario

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