有没有办法在matlab的单元格模式下调用子函数?
Posted
技术标签:
【中文标题】有没有办法在matlab的单元格模式下调用子函数?【英文标题】:Is there a way to call a subfunction while in cell mode in matlab? 【发布时间】:2009-02-02 15:54:24 【问题描述】:假设我有以下代码:
% 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 文件中工作,并且在此类脚本中不允许使用子函数和嵌套函数。因此,我所要求的可能是不可能的。
虽然下面给出的匿名函数解决方案可能有些限制,因为它只允许单个表达式函数,但它实际上已经足够我想做的事情了,因此我接受了它作为我的问题的解决方案。
【问题讨论】:
对不起,我帮不上忙。为了更清楚起见,您是否要向 m 文件添加子函数,这些子函数仅由该 m 文件使用,并且您不想为其创建一个全新的 m 文件? 您的第二次编辑澄清了一些事情。确实,在脚本文件中不能有子函数或嵌套函数。匿名函数是使用脚本的唯一方法。唯一的其他选择是将 foo 保存为单独的文件。 【参考方案1】:更正:
我误解了您对 CELL 一词的使用。我很抱歉。看来您只是想在命令行定义一个函数而不将其保存到 .m 文件中。为此,您可以使用匿名函数:
foo = @(num) disp(['num=' num2str(num)]);
然后你可以像使用任何其他函数一样使用“foo”。
【讨论】:
如果您查看提供的代码,情况并非如此。这是关于将 MATLAB 代码放置在单独的“单元”中以简化开发的能力。 提供的代码在这一点上有些不清楚。您不能将 MATLAB 代码放置在元胞数组的单独元胞中。您可以将函数句柄放在一个元胞数组中,例如:fhArray = @foo1, @foo2。 不幸的是,这不是我想要做的,但还是感谢您提供帮助。 我已经修正了我的答案,以解释我对您所问内容的误解。很抱歉混淆了。 谢谢。虽然这不是我希望的答案,但我希望这确实可以完成工作,而我想要的实际上可能是不可能的。【参考方案2】:我通常处理的方式是在主函数内部的某处使用 dbstop。然后您可以访问主函数通常可以访问的所有功能。如果您正在使用 ML 编辑器,只需在第一次调用 foo 时使用断点。
希望对你有帮助。
丹
【讨论】:
以上是关于有没有办法在matlab的单元格模式下调用子函数?的主要内容,如果未能解决你的问题,请参考以下文章
多选模式下的 UITableView 删除选定单元格中所有子视图的背景颜色