关于matlab的输入输出参数

nargin

nargin为“number of input arguments”的缩写。 在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数。

nargin(fx)在函数fx的定义声明中返回输入参数的个数。如果函数包括varargin其定义,那么nargin返回的输入个数为负。例如函数foo输入有 a,b,和varargin三个参数,那么nargin('foo”)返回值为-3

从而可以进行不定输入量的计算

function re = add_multi(a,b,c,d)
%
%
if nargin ==4
    re =  a + b + c + d;
elseif nargin ==3

    re = a + b + c ;

nargout

nargout

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

应用举例
function varargout = foo(varargin)
fprintf('How many output arguments? %d\n', nargout);
for k=1:nargout
varargout(k) = {varargin{k}};
end
end
输出结果
>> ret = foo(1, 2, 3)
How many output arguments? 1
ret = 1
>> [retA, retB] = foo(1, 2, 3)
How many output arguments? 2
retA = 1
retB = 2
>> [retA, retB, retC] = foo(1, 2, 3)
How many output arguments? 3
retA = 1
retB = 2
retC = 3

还有就是上文已出现的两个参数

varargin

varargin是matlab的一个函数,是“Variable length input argument list”的缩写,它提供了一种函数可变参数列表机制,允许调用者调用该函数时根据需要来改变输入参数的个数。

function re = add_var(a,b,varargin)
%
%
% author:jzq
if nargin ==2
    re =  a + b;
elseif nargin ==3
    c = varargin[1];
    re = a + b + c;
else 
    error( 'wrong');

end

只要把函数的参数列表的最后一个参数写成varargin,就可以在函数内部以访问cell数组的方式来获取可变参数的信息


varargout

varargout可以看做“Variable length output argument list”的缩写。在matlab中定义m函数时通过varargout我们可以得到可变个数个返回值

function varargout=add_my(b,c,d)
% add_my 输入参数的相加
% 输入 加数b、c、d
% 输出 varargout为输入参数的运算结果
% 2012年6月22日编
if nargout==1
a1 = b + c + d;
varargout={a1};
elseif nargout==2
a1 = b + c + d;
a2 = b + c;
varargout={a1,a2};
elseif nargout==3
a1 = b + c + d;
a2 = b + c;
a3 = b + d;
varargout={a1,a2,a3};
else
error('wrong')
end

>> a=add_my(1,2,3)

a =

6

>> [a,b]=add_my(1,2,3)

a =

6

b =

3

>> [a,b,c]=add_my(1,2,3)

a =

6

b =

3

c =

4

>> add_my(1,2,3)
??? Error using ==> add_my at 22
wrong

你可能感兴趣的:(关于matlab的输入输出参数)