0

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

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

c = f(x)

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

[a, b] = f(x)

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

4

2 回答 2

4

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

[~,b] = f(x);
[a,~] = f(x); % equivalent to a = f(x)
于 2014-11-03T15:52:44.457 回答
4

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

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

hist(a);

接下来将直方图数据返回到N. 没有产生情节:

N = hist(a);

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

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

此行为由检查来控制nargout,并且可以合并到您自己的函数中。

于 2014-11-03T16:08:06.603 回答