Matlab 如何在不使用临时变量的情况下从函数中获取第二个返回值?
我有一个返回两个值的函数,如下所示:Matlab 如何在不使用临时变量的情况下从函数中获取第二个返回值?,matlab,Matlab,我有一个返回两个值的函数,如下所示: [a b] = myfunc(x) 有没有一种方法可以在不使用临时变量和不改变函数的情况下获得第二个返回值 我要找的是这样的东西: abs(secondreturnvalue(myfunc(x))) 据我所知没有subsref在这种情况下似乎不起作用,可能是因为第二个变量甚至没有从函数返回 因为Matlab2009b,所以可以使用符号 [~, b] = function(x) 如果您不需要第一个参数,但这仍然为b使用一个临时变量,除非有迫切的需要,我
[a b] = myfunc(x)
有没有一种方法可以在不使用临时变量和不改变函数的情况下获得第二个返回值
我要找的是这样的东西:
abs(secondreturnvalue(myfunc(x)))
据我所知没有
subsref
在这种情况下似乎不起作用,可能是因为第二个变量甚至没有从函数返回
因为Matlab2009b,所以可以使用符号
[~, b] = function(x)
如果您不需要第一个参数,但这仍然为
b
使用一个临时变量,除非有迫切的需要,我可能会建议您不要这样做。代码的清晰性将受到影响。将输出存储在临时变量中,然后将这些变量传递给另一个函数,这将使您的代码更干净,下面概述了执行此操作的不同方法:
但是,如果您确实想要或需要这样做,我能想到的唯一可行的方法是创建您自己的函数secondreturnvalue
。下面是一个更一般的示例,称为n\u输出
:
function value = nth_output(N,fcn,varargin)
[value{1:N}] = fcn(varargin{:});
value = value{N};
end
您可以通过以下方式调用它:1)您想要的输出参数号,2)a到myfunc
,以及3)您需要传递到myfunc
的任何输入参数:
abs(nth_output(2,@myfunc,x))
使用类而不是带有相应“getter”方法的函数怎么样。您可能会得到类似于abs(myfunc.secondReturnValue(x))的内容。将此作为伪特性请求向MathWorks提交。