我有一个返回两个值的函数,如下所示:
[a b] = myfunc(x)
有没有办法在不使用临时变量的情况下获得第二个返回值,而无需更改函数?
我正在寻找的是这样的:
abs(secondreturnvalue(myfunc(x)))
答案 0 :(得分:27)
subsref
似乎在这种情况下不起作用,可能是因为第二个变量甚至没有从函数返回。
自matlab 2009b起,可以使用符号
[~, b] = function(x)
如果您不需要第一个参数,但仍然使用b
的临时变量。
答案 1 :(得分:19)
除非有迫切需要这样做,否则我可能会反对。代码的清晰度将受到影响。将输出存储在临时变量中,然后将这些变量传递给另一个函数将使您的代码更清晰,这里概述了您可以执行此操作的不同方法:How to elegantly ignore some return values of a MATLAB function?。
但是,如果确实希望或需要这样做,我能想到的唯一可行方法是创建自己的函数secondreturnvalue
。这是一个名为nth_output
的更一般的例子:
function value = nth_output(N,fcn,varargin)
[value{1:N}] = fcn(varargin{:});
value = value{N};
end
你可以通过传递输入来调用它1)你想要的输出参数号,2)function handle到myfunc
,以及3)你需要传递给{{1的输入参数}}:
myfunc