Mi interessa il problema generale di accedere a un campo che può essere seppellito un numero arbitrario di livelli in profondità in una struttura di contenimento. Un esempio concreto che utilizza due livelli è sotto.Come posso accedere dinamicamente a un campo di un campo di una struttura in MATLAB?
che ho una struttura toplevel
, che definisco dalla riga di comando MATLAB con la seguente:
midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;
posso accedere alla struttura midlevel
passando il nome del campo come una stringa, ad esempio:
fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);
ma non riesco ad accedere alla struttura bottomlevel
allo stesso modo - la seguente sintassi non è valida:
fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'
Potrei scrivere una funzione che guarda attraverso fieldnameToAccess
per periodi e poi scorre in modo ricorsivo per ottenere il campo desiderato, ma mi chiedo se c'è un modo intelligente di usare i built-in MATLAB per ottenere direttamente il valore del campo.
Esiste un modo per aggiungere la fieldnameToAccess alla fine di una variabile, vale a dire . primo livello (i campi {1} {1}) (campi {1} {2}) = resample (GetField (primo livello, i campi {1} {:}), ...)..; in generale (senza sapere che ci sono solo 2 livelli)? – Jon