matlab中varargout与nargout,varargin与nargin的区别

来源:互联网 发布:arrival to earth知乎 编辑:程序博客网 时间:2024/04/25 16:44

1、varargout与nargout区别

varargout简介:
varargout可以看做“Variable length output argument list”的缩写。在matlab中定义m函数时通过varargout我们可以得到可变的数个返回值。在matlab命令窗口中输入doc varargout或help varargout可以获得相关帮助信息。函数申明时的输出参数。

用法:function varargout = foo(n)。

nargout简介:

在matlab中定义一个函数时, 在函数体内部, nargout指出了输出参数的个数。特别是在利用了可变参数列表的函数中, 用nargout获取输出参数个数很方便。

用法:

n = nargout
    n= nargout(fun)

2、varargin与nargin的区别

varargin简介:
varargin可以看做“Variable length input argument list”的缩写。在matlab中, varargin提供了一种函数可变参数列表机制。 就是说, 使用了“可变参数列表机制”的函数允许调用者调用该函数时根据需要来改变输入参数的个数。

用法:function y = bar(varargin)。

nargin简介:

在matlab中定义一个函数时, 在函数体内部, nargin指出了输入参数的个数。 特便是在利用了可变参数列表的函数中, 用nargin获取输入参数个数很方便。
    用法:
    n = nargin
    n = nargin(fun)

3、实例

function  varargout = foo(varargin) 
    fprintf('How many output arguments? %d\nAnd they are: \n', nargout); 
    for k=1:nargout 
    varargout(k) = varargin(k); % the same as {varargin{k}}; 
    fprintf('%s ', num2str(varargout{k})); 
    end 
    disp(' '); 
    end

在matlab command中运行结果如下:

>>[y1,y2]=lianxi(1,2,3)
    How many output arguments? 2
    And they are:
    1 2 

y1 =

     1


    y2 =

     2

>> y=lianxi(1,2,3)
    How many output arguments? 1
    And they are:
    1 

y =

     1


0 0