2011-12-25 17 views
6

Jak mogę wyodrębnić określone pole z każdego elementu tablicy struct Matlab?Jak wyciąć tablicę struct?

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

Chciałbym tablicę zawierającą 6 i 7. Ani x(:).a ani x.a robić to, co chcę.

>> x(:).a 

ans =  

    6 


ans = 

    7 

Odpowiedz

9

Żaden problem - wystarczy użyć:

arr = [x.a]; 

Będzie Concat wszystkie wartości, które trzeba. Jeśli masz bardziej złożonych danych, można użyć nawiasów bransolety:

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

Niestety, jestem prawie pewien, że MATLAB nie ma dobrego sposobu robienia tego, co chcesz. Będziesz musiał albo użyć pętli for do skonstruowania nowej tablicy, albo wrócić i przeprojektować struktury danych. Na przykład możesz użyć struct-of-arrays zamiast tablicy-struktur.

0

Dla wielowymiarowej tablicy, trzeba

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