Main Content

nargout

函数输出参数数目

说明

示例

nargout 针对当前正在执行的函数,返回该函数调用中指定的函数输出参数的数目。该语法仅可在函数体内使用。

示例

nargout(fun) 返回 fun 函数定义中出现的输出数目。如果该函数定义中包含 varargout,那么 nargout 返回输出数目的负数。例如,如果 myFun 函数声明输出 yzvarargout,那么 nargout('myFun') 返回 -3

如果 fun 指向一个使用 arguments 验证代码块的函数,则返回值是函数定义中声明的位置参数的个数,表示为非负值。

示例

全部折叠

在名为 subtract.m 的文件中创建一个函数,该函数仅在收到请求时才计算第二个返回值 absdif

type subtract.m
function [dif,absdif] = subtract(y,x)
    dif = y-x;
    if nargout > 1
        disp('Calculating absolute value')
        absdif = abs(dif);
    end
end

在命令提示符下使用一个返回值调用 subtract 函数。

diff = subtract(42,13)
diff = 29

使用两个返回值再次调用 subtract 函数。

[dif,absdif] = subtract(2,5)
Calculating absolute value
dif = -3
absdif = 3

确定一个函数可返回多少个输出。

前一示例中创建的 subtract 函数在声明语句中包含两个输出(difabsdif)。

fun = @subtract;
nargout(fun)
ans = 2

确定使用 varargout 的函数可返回多少个输出。

在名为 mySize.m 的文件中创建一个函数,该函数从 size 函数返回维度向量,并使用 varargout 返回各个维度。

type mySize.m
function [sizeVector,varargout] = mySize(x)
    sizeVector = size(x);
    varargout = cell(1,nargout-1);
    for k = 1:length(varargout)
        varargout{k} = sizeVector(k);
    end
end

查询 mySize 可以返回多少个输出。

fun = 'mySize';
nargout(fun)
ans = -2

负号表示第二个输出是 varargoutmySize 函数可返回不定数目的附加输出。

输入参数

全部折叠

一个函数,nargout 从该函数的定义中返回其输出参数数目;指定为函数句柄、字符向量或字符串标量。

示例: @rand

示例: 'sortrows'

数据类型: char | function_handle

提示

  • 如果将函数用作表达式的一部分,例如 if 语句,则 MATLAB® 将使用一个输出参数调用该函数。因此,nargout 函数将在表达式中返回 1

  • 如果您在函数中检查值为 0 的 nargout,并且指定了输出的值,MATLAB 将填充 ans。但是,如果您检查 nargout,并且不指定输出的值,则 MATLAB 将不修改 ans

扩展功能

版本历史记录

在 R2006a 之前推出