免责声明:我实际上正在使用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)