Wie kann ich in MATLAB dynamisch auf ein Feld eines Feldes einer Struktur zugreifen?

Ich interessiere mich für das allgemeine Problem, auf ein Feld zuzugreifen, das eine beliebige Anzahl von Ebenen tief in einer enthaltenden Struktur vergraben sein kann. Ein konkretes Beispiel mit zwei Ebenen finden Sie unten.

Sag ich habe eine Strukturtoplevel, das ich in der MATLAB-Befehlszeile mit folgendem Befehl definiere:

midlevel.bottomlevel = 'foo';
toplevel.midlevel = midlevel;

Ich kann auf das @ zugreifmidlevel Struktur durch Übergeben des Feldnamens als Zeichenfolge,

fieldnameToAccess = 'midlevel';
value = toplevel.(fieldnameToAccess);

aber ich kann nicht auf das @ zugreifbottomlevel strukturiere genauso - die folgende Syntax ist ungültig:

fieldnameToAccess = 'midlevel.bottomlevel';
value = toplevel.(fieldnameToAccess); %# throws ??? Reference to non-existent field 'midlevel.bottomlevel'

Ich könnte eine Funktion schreiben, die @ durchschafieldnameToAccess für Perioden und dann rekursiv durchlaufen, um das gewünschte Feld zu erhalten, aber ich frage mich, ob es eine clevere Möglichkeit gibt, MATLAB-Built-Ins zu verwenden, um nur den Feldwert direkt zu erhalten.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage