Me interesa el problema general de acceder a un campo que puede estar enterrado en un número arbitrario de niveles profundos en una estructura contenedora. Un ejemplo concreto usando dos niveles está abajo.¿Cómo puedo acceder dinámicamente a un campo de un campo de una estructura en MATLAB?
Digamos que tiene una estructura toplevel
, que defino desde la línea de comandos de MATLAB con lo siguiente:
midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;
puedo acceder a la estructura midlevel
pasando el nombre del campo como una cadena, por ejemplo:
fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);
pero no puedo acceder a la estructura bottomlevel
la misma manera - los siguientes no es una sintaxis válida:
fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'
Podría escribir una función que se muestre a través de fieldnameToAccess
por períodos y luego iterar recursivamente para obtener el campo deseado, pero me pregunto si hay alguna manera inteligente de utilizar MATLAB incorporados para obtener el valor del campo directamente.
¿Hay una manera de añadir el fieldnameToAccess al final de una variable, es decir, . toplevel. (fields {1} {1}). (fields {1} {2}) = remuestreo (getfield (toplevel, fields {1} {:}), ...); de manera general (sin saber que solo hay 2 niveles)? – Jon