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

时间:2010-09-14 15:41:36

标签: matlab

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

[a b] = myfunc(x)

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

我正在寻找的是这样的:

abs(secondreturnvalue(myfunc(x)))

2 个答案:

答案 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 handlemyfunc,以及3)你需要传递给{{1的输入参数}}:

myfunc