Я пишу скрипт matlab, где мне бы хотелось узнать имя скрипта, который один шаг вверх в стеке. Причина, по которой я нуждаюсь в этом, заключается в том, что я пишу вспомогательный скрипт для вызова некоторых основных фактов о рабочей области, прежде чем заниматься более тяжелыми вычислениями, а вспомогательный скрипт должен иметь возможность выдавать сообщения об ошибках при вызове сценариев вычислений.Получите имя файла matlab на один шаг вверх в стеке
Я пробовал использовать mfilename
и dbstack
, но мне не удается получить ничего, кроме имени вспомогательного скрипта.
Чтобы объяснить далее, у меня есть следующие сценарии:
verify_base_conditions
: вспомогательной сценарий, называется на одной из первых строчек вheavy_stuff_calculation
иsweet_mother_of_algorithms
.general_entry_point
: сценарий, где я собираю общие рабочие процессы в клетках
Я стараюсь держать сценарий точки входа как можно, и реорганизовать тяжелые вычисления (или что-нибудь, что нужно больше, чем несколько строк, на самом деле) в сценарии, основанные на задачах, повторно используемые. Если я, с точки сценария входа, вызовите sweet_mother_of_algorithms
и основные условия для этого сценария для запуска не выполняются, я хочу, чтобы увидеть сообщение об ошибке, как
Error: this_cool_var must be defined when running sweet_mother_of_algorithms
general_entry_point line 15
Я попытался с помощью
error(['this_cool_var must be defined when running ' mdfilename])
и другие аналогичные конструкции, но я не мог сделать сообщение об ошибке сказать ничего, кроме verify_base_conditions
.
Как найти имя скрипта, работающего на одном уровне в стеке?
(Примечание. Я не заинтересован в поиске скрипт работает на нижней стека - что почти всегда будет general_entry_point
Я просто заинтересован в получении имя сценария, который называется verify_base_conditions
.)
на самом деле я удивлен, что ваш 'ошибка ([... mdfilename]) 'code only prints verify_base_conditions. Ошибки norma lly распечатать весь стек вызовов. – Richante
Я получаю весь стек вызовов, если я выполняю весь файл (например, нажав F5), но не тогда, когда я выполняю только одну ячейку. Это то, что я обычно делаю ... –
...но теперь, почему-то совершенно вне моего понимания, он внезапно начал работать. Я использую ваше первое предложение, и оно работает как шарм! –