9

假设我有以下代码:

% 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 文件中。

编辑(2):我只记得我隐约记得单元模式仅在 matlab 脚本中工作,而不在函数 m 文件中工作,并且在此类脚本中不允许子函数和嵌套函数。因此,我所要求的可能是不可能的。

尽管下面给出的匿名函数解决方案可能有些限制,因为它只允许单个表达式函数,但实际上它确实足以满足我的愿望,因此我已经接受它作为我的问题的解决方案。

4

2 回答 2

5

更正:

我误解了你对 CELL 这个词的使用。我很抱歉。看来您只是想在命令行定义一个函数而不将其保存到 .m 文件中。为此,您可以使用匿名函数:

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

然后你可以像使用任何其他函数一样使用“foo”。

于 2009-02-02T16:02:36.283 回答
0

我通常处理的方式是在主函数内部的某处使用 dbstop。然后您可以访问主函数通常可以访问的所有功能。如果您正在使用 ML 编辑器,只需在第一次调用 foo 时使用断点。

希望能帮助到你。

于 2009-02-03T13:34:29.920 回答