2012-07-12 13 views
5

ja stworzyliśmy tablicę komórkową struktura-plików, jak to na przykład:array komórką 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. 

Czy istnieje możliwośc dostęp do wszystkich nlgt_randlgt-dziedzinach RES2-cellarray na raz?

+1

z mojego zrozumienia na jak dane są zorganizowane w Matlab ... nie – Rasman

Odpowiedz

5

Wszystko, co musisz zrobić, to konwertowanie res2 z tablicy komórek do macierzy struct (używając cell2mat). Wtedy możesz dostać się do członków struktury w dokładnie taki sposób, jakiego pragniesz. Oto przykład, gdzie cdat jest macierzą komórkową struktur z dwoma elementami, s1 i s2.

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

można uzyskać dostęp do komórki przez:

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