如何在不使用临时变量的情况下从函数中获取第二个返回值?

jjk*_*ker 33 matlab

我有一个函数返回两个值,如下所示:

[a b] = myfunc(x)
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用临时变量的情况下获得第二个返回值,而无需更改函数?

我正在寻找的是这样的:

abs(secondreturnvalue(myfunc(x)))
Run Code Online (Sandbox Code Playgroud)

sec*_*ond 28

从来没听说过.subsref在这种情况下似乎不起作用,可能是因为第二个变量甚至没有从函数返回.

从matlab 2009b开始,可以使用表示法

[~, b] = function(x) 
Run Code Online (Sandbox Code Playgroud)

如果你不需要第一个参数,但这仍然使用临时变量b.


gno*_*ice 20

除非有迫切的需要这样做,否则我可能会建议不要这样做.代码的清晰度将受到影响.存储临时变量输出,然后通过这些变量到另一个功能将使您的代码更加清晰,而不同的方法可以做到这一点罗列如下:如何优雅忽略MATLAB函数的一些返回值?.

但是,如果你真的想要或者需要这样做,我能想到的唯一可行的方法就是创建你自己的函数secondreturnvalue.这是一个更通用的例子nth_output:

function value = nth_output(N,fcn,varargin)
  [value{1:N}] = fcn(varargin{:});
  value = value{N};
end
Run Code Online (Sandbox Code Playgroud)

你会被传递作为输入称它为1)你想,2)输出参数号功能句柄myfunc,和3)无论输入参数需要传递到myfunc:

abs(nth_output(2,@myfunc,x))
Run Code Online (Sandbox Code Playgroud)