Как я могу получить динамический доступ к полю поля структуры в MATLAB?

Меня интересует общая проблема доступа к полю, которое может быть похоронено на произвольное количество уровней глубоко в содержащей структуре. Ниже приведен конкретный пример использования двух уровней.

Скажем, у меня есть структура верхнего уровня , которую я определяю из командной строки MATLAB следующим образом:

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

Я могу получить доступ к структуре среднего уровня , передав имя поля как строка, например:

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

, но я не могу получить доступ к структуре нижнего уровня таким же образом - следующий недопустимый синтаксис:

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

Я мог бы написать функцию, которая просматривает fieldnameToAccess на периоды, а затем рекурсивно выполняет итерацию, чтобы получить желаемое поле, но мне интересно, есть ли какой-нибудь умный способ использовать встроенные модули MATLAB, чтобы просто получить значение поля напрямую.

5
задан gnovice 30 March 2017 в 05:00
поделиться