Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在matlab中,在单元模式下是否有调用子函数的方法?_Matlab - Fatal编程技术网

在matlab中,在单元模式下是否有调用子函数的方法?

在matlab中,在单元模式下是否有调用子函数的方法?,matlab,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 编辑:基本上,本例中的每个单元格都会执行一些冗长的计算,所以我想分别对它们进行测试和调试。我使用子函数来抽象和重用公共功能,因为到

假设我有以下代码:

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

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

更正:

我误解了你用“细胞”这个词。我道歉。看起来您只是想在命令行中定义函数,而不想将其保存到.m文件中。为此,您可以使用匿名函数:

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

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

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

希望能有帮助


Dan

如果您查看提供的代码,则情况并非如此。这是关于将MATLAB代码放在单独的“单元”中以简化开发的能力。提供的代码在这一点上有点不清楚。不能将MATLAB代码放在单元数组的单独单元中。你可以把函数句柄放在一个单元格数组中,比如:fhArray={@foo1,@foo2}。不幸的是,这不是我想要做的,但还是要感谢你的帮助。我已经修正了我的答案,以解释我对你所问问题的误解。抱歉弄错了,谢谢。虽然这不是很好的答案,但我希望这能完成工作,我想要的可能实际上是不可能的。对不起,我帮不了你更多。为了更清楚,您是否希望将子功能添加到一个m文件中,该m文件将仅由该m文件使用,并且您不希望为其创建一个全新的m文件?您的第二次编辑澄清了这一点。的确,在脚本文件中不能有子函数或嵌套函数。匿名函数是使用脚本的唯一方法。唯一的其他选项是将foo另存为一个单独的文件。