有没有办法在matlab中以单元格模式调用子函数?

时间:2009-02-02 15:54:24

标签: matlab

说我有以下代码:

% 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文件中工作,并且在这样的脚本中不允许使用子函数和嵌套函数。因此,我所要求的可能是不可能的。

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

2 个答案:

答案 0 :(得分:5)

CORRECTION:

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

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

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

答案 1 :(得分:0)

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

希望它有所帮助。