Есть ли способ вызвать подфункцию в режиме ячейки в Matlab? - PullRequest
9 голосов
/ 02 февраля 2009

Скажите, у меня был следующий код:

% Cellmode_subfunction_test.m
%% Cell 1
foo(1);

%% Cell 2
foo(2);

%% Definition of the foo subfunction
function foo(num)
disp(['num=' num2str(num)]);

Как проверить ячейку 1 и ячейку 2 с подфункцией, определенной в конце?

Редактировать: в основном каждая из ячеек в этом примере выполняет некоторые длительные вычисления, поэтому я хотел бы проверить и отладить их отдельно. Я использую подфункции для абстрагирования и повторного использования общих функций, и, поскольку до сих пор эта функция используется только в этом конкретном приложении, я не хочу помещать foo в отдельный m-файл.

Edit (2): Я только что вспомнил, что смутно помню, что режим ячеек работает только в сценариях Matlab, а не в m-файлах функций, и что в таких сценариях недопустимы подфункции и вложенные функции. Таким образом, то, что я прошу, вероятно, не возможно.

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

Ответы [ 2 ]

5 голосов
/ 02 февраля 2009

ИСПРАВЛЕНИЕ:

Я неправильно понял, что вы использовали слово CELL. Мои извенения. Похоже, вы просто хотите определить функцию в командной строке, не сохраняя ее в файл .m. Для этого вы можете использовать анонимные функции:

foo = @(num) disp(['num=' num2str(num)]);

Тогда вы можете использовать «foo», как и любую другую функцию.

0 голосов
/ 03 февраля 2009

То, как я обычно работаю, это использование dbstop где-то внутри основной функции. Затем у вас есть доступ ко всем функциям, к которым обычно имеет доступ основная функция. Если вы работаете с редактором ML, просто используйте точку останова при первом вызове foo.

Надеюсь, это поможет.

Dan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...