2012-07-12 13 views
5

tôi đã tạo ra một mảng di động của cấu trúc tác phẩm, như thế này ví dụ:mảng di động của struct-Files

>> res2 

res2 = 

    Columns 1 through 7 

    [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] 

    Columns 8 through 10 

    [1x1 struct] [1x1 struct] [1x1 struct] 



>> res2{1} 

ans = 

    nchi005_randchi005: 0.1061 
      nfdr_randfdr: 0.0011 
      nlgt_randlgt: 2.9517e-004 
     nphast_randphast: 0.6660 
      ndd_rand_dd: 0.0020 
    ndd_rand_dd_larger: 1 

    >> res2{1}.nlgt_randlgt 

ans = 

    2.9517e-004 


>> res{:}.nlgt_randlgt 
??? Bad cell reference operation. 

Có một possiblity để truy cập vào tất cả các nlgt_randlgt-lĩnh vực res2-cellarray cùng một lúc?

+1

từ hiểu biết của tôi về dữ liệu như thế nào được tổ chức trong Matlab ... không – Rasman

Trả lời

5

Tất cả những gì bạn cần làm là chuyển đổi res2 từ mảng ô thành mảng cấu trúc (sử dụng cell2mat). Sau đó, bạn có thể nhận được tại các thành viên struct trong chính xác theo cách bạn mong muốn. Dưới đây là ví dụ, trong đó cdat là một mảng ô của các cấu trúc với hai thành viên, s1s2.

cdat = 

    [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] [1x1 struct] 

>> dat = cell2mat(cdat) 

dat = 

1x10 struct array with fields: 
    s1 
    s2 

>> [dat(:).s1] 

ans = 

    1  1  1  1  1  1  1  1  1  1 
2

bạn có thể truy cập vào các tế bào bằng cách:

cellfun(@(r) r.nlgt_randlgt, res2);