Matlab 中的多输出函数究竟返回什么?



免责声明:我实际上正在使用Scilab,但它与MATLAB非常相似,根据我的研究,MATLAB似乎也发生了同样的现象。

在 MATLAB 中,函数可以是多输出的。假设我们有一个函数function [a, b] = f(x) .如果我输入:

c = f(x)

然后c给出第一个输出的值。如果我输入:

[a, b] = f(x)

然后[a, b]给出两个输出对的值。这似乎意味着 MATLAB 没有引用透明度。表达式f(x)的实际值是多少?这是怎么回事?

在某些情况下,请求的输出数量会改变行为,特别是当调用没有输出参数的函数时。

例如,这只是使用默认设置绘制a数据直方图:

hist(a);

接下来将直方图数据返回到N 中。 没有剧情产生:

N = hist(a);

但是,如果我们要求两个输出(X现在是箱中心(,我们可以用bar绘制直方图(如果没有给出输出参数,这是hist内部用来绘制的图(:

[N, X] = hist(a);
bar(X,N);

此行为通过 check nargout 来控制,并且可以合并到您自己的函数中。

这意味着该函数通常f(x)返回 2 个输出。但是,当仅使用一个输出参数调用时,它将仅返回第一个(在您的情况下a(。在 MATLAB 中,您还可以通过使用 ~ 来指定您对特定输出不感兴趣:

[~,b] = f(x);
[a,~] = f(x); % equivalent to a = f(x)

相关内容

  • 没有找到相关文章

最新更新