我有一个函数返回两个值,如下所示:
[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)