2012-07-12 10 views
5

He creado una serie de células de la estructura de archivos, así por ejemplo:serie de células de estructura Expediente

>> 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. 

¿Hay una posibilidad de acceder a todos los nlgt_randlgt-campos de res2-CellArray a la vez?

+1

de mi entendimiento sobre cómo se organiza los datos en Matlab ... sin – Rasman

Respuesta

5

Todo lo que necesita hacer es convertir su res2 de una matriz de celdas a una matriz de estructuras (usando cell2mat). Entonces puedes obtener los miembros de la estructura exactamente de la manera que deseas. Aquí hay un ejemplo, donde cdat es una matriz de celdas de estructuras con dos miembros, s1 y 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

se puede acceder a la celda por:

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