2011-12-25 19 views
6

Matlab struct dizisinin her elemanından belirli bir alanı nasıl çıkarabilirim?Yapı dizisi nasıl parçalanır?

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

Ben 6 ve 7. Ne x(:).a ne de x.a istediğimi yapmama içeren bir dizi istiyorum.

>> x(:).a 

ans =  

    6 


ans = 

    7 

cevap

9

Sorun - sadece kullanın:

arr = [x.a]; 

İhtiyacınız tüm değerleri Concat edecektir. Daha karmaşık veri varsa , küme Bracers kullanabilirsiniz: ihtiyacınız çok boyutlu dizide için

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

Maalesef, MATLAB'in istediğiniz şeyi yapmak için iyi bir yolu olmadığı konusunda neredeyse eminim. Yeni bir dizi oluşturmak için bir for döngüsü kullanmanız ya da geri dönüp veri yapılarınızı yeniden tasarlamanız gerekecektir. Örneğin, bir dizi yapıdan ziyade bir dizi yapıyı kullanabiliyor olabilirsiniz.

0

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