2011-12-25 37 views
6

Làm thế nào tôi có thể trích xuất một trường cụ thể từ mỗi phần tử của một mảng cấu trúc Matlab?Làm thế nào để lát một mảng cấu trúc?

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

Tôi muốn một mảng chứa 6 và 7. Cả x(:).a cũng không x.a làm những gì tôi muốn.

>> x(:).a 

ans =  

    6 


ans = 

    7 

Trả lời

9

Không vấn đề gì - chỉ cần sử dụng:

arr = [x.a]; 

Nó sẽ concat tất cả các giá trị mà bạn cần. Nếu bạn có một dữ liệu phức tạp hơn, bạn có thể sử dụng Bracers xoăn:

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

Đáng buồn thay, tôi gần như chắc chắn rằng MATLAB không có cách nào tốt để làm những gì bạn muốn. Bạn sẽ phải sử dụng vòng lặp for để xây dựng một mảng mới, hoặc quay lại và thiết kế lại cấu trúc dữ liệu của bạn. Ví dụ, bạn có thể sử dụng một struct-of-array chứ không phải là một mảng-of-structs.

0

Đối với một mảng đa chiều, bạn cần

reshape([x.a], size(x)) 
Các vấn đề liên quan