如何在matlab中调用表达式中没有输出的函数

时间:2015-06-07 07:58:11

标签: matlab anonymous-function cell-array

短版

如果表达式没有返回任何内容,是否有办法在表达式中调用函数(或该方法)?假设我们有一个表达式a(o) + b(o),我们希望在c(o)没有输出时在同一个表达式中调用c。例如,如果c具有返回值,则可以使用g = @(x) 0;之类的虚拟函数,并使用a(o) + b(o) + g(c(o))来调用c(o)。但是,如果没有回报价值,那就无法发挥作用。

长版

我有一个匿名函数,它调用一个没有输出的函数,如下所示:

f1 = @(obj, s) noout1(obj, s.x, s.y);

我用f1(o, s)来称呼它。现在我希望它调用两个函数。如果他们有输出我可以将它们放在像这样的单元格数组中

f2 = @(obj, s) {noout1(obj, s.x, s.y); noout2(obj, s.z)};

并致电f2(o, s),但如果nargout==0显然不起作用。我现在唯一的解决方案是收集单元数组中的匿名函数并单独调用它们:

f = {@(obj, s) noout1(obj, s.x, s.y); @(obj, s) noout2(obj, s.z)}

并使用

cellfun(@(x) x(o, s), f);

0 个答案:

没有答案