如何确定Matlab函数是否不返回值



f.m:

function [] = f(the_only_argument)
% Do awesome things here
end

g.m:

function [value] = g(the_only_argument)
% Do awesome things here
value = awesome_value;
end

是否存在某种ReturnsNothing,例如:

assert(ReturnsNothing(@f) & ~ReturnsNothing(@g))

第页。S.我希望能够调用arrayfun(@f, [1,1,1]),它目前返回一个错误:

??? Error using ==> f
Too many output arguments.

nargout('f')nargout('g')能满足您的需要吗?

如果函数的输出参数数量可变,请小心,因为对于这种特殊情况,nargout将返回负数。

第二部分

arrayfun(@f, [1,1,1])抛出上面的错误,因为f没有定义输入,arrayfun将为数组中的每个值调用f(使用该值作为输入(。因此该误差与CCD_ 9 引起的误差相同

如果您需要在arrayfun中运行一个不接受输入的函数,您可以将其封装在一个匿名函数中,该函数将丢弃输入
例如

arrayfun(@(~)f,[1,1,1])

不会导致错误,因为arrayfun不需要输出

第一部分

nargout可以在函数之外使用,通过传递包含函数名称的字符串来检查它有多少定义的输出

例如,使用问题中的函数

nargout('f')
ans =
     0
nargout('g')
ans =
     1

此外,如果存在varargout,则将其计数为单个输出,但返回负值以指示其存在

例如具有以下功能

function [value,varargout] = h()
...code
end

它返回

nargout('h')
ans =
     -2

相关内容

  • 没有找到相关文章

最新更新