matlab中的nargin和nargout以及varargin,varargout函数的使用说明

matlab中的nargin和nargout以及varargin,varargout函数的使用说明本文详细介绍 MATLAB 中 nargin 和 nargout 的用法 包括它们在获取函数输入和输出参数数量 varargin 和 varargout 的灵活运用 以及在函数设计中的实际应用场景

大家好,欢迎来到IT知识分享网。

1. nargin和nargout

Matlab提供了两个获取函数参数数目的函数:nargout与nargin。在函数内部使用时,nargin 和 nargout分别表明有输入和输出参数数量。若在函数外部使用, nargin 和nargout对给定的函数,表明输入和输出参数数量。如果一个函数有可变数量的参数,参数数量为负值。

1.1 nargin用法

nargin:number of function input arguments,指的是一个函数的输入变量的个数。

用法:nargin或nargin(fx), 其中fx指的是一个函数名或着函数句柄。

当一个函数的参数中含有varargin变量时,这时候返回值为负。

function test(a,b) switch nargin case 1 c = a+a; case 2 c = a+b; otherwise c = 0; end disp(c) end 
nargin('test') 

但是如果我们将原函数变为:

function test(a,b,varargin) switch nargin case 1 c = a+a; case 2 c = a+b; otherwise c = 0; end disp(c) end 

此时

 nargin('test')=-3 

nargin表示一个函数的输入变量的个数

varargin, varargout表示的是函数的输入和输出的变量的个数是可变的。

n = numel(A) returns the number of elements, n, in array A.

varargin,varargout在函数中运用

varargout,表示函数输出结果的个数,[g,varargout]=fun(varargin)

nargin:系统统计出来的参数输入个数

举例说明函数的使用:实现一个相加的功能,不确定有多个数参与相加,但至少有两个。

function g=add(a,b,varargin) if nargin==2 g=a+b; elseif nargin==3 g=a+b+varargin{ 
   1}; end 

varargout就是在函数实现过程中,将产生的结果赋给varargout{1},varargout{2}等。

function varargout=add(a,b,varargin) if nargin==2 varargout{ 
   1}=a+b; elseif nargin==3 varargout{ 
   1}=a+b; varargout{ 
   2}=a+b-varargin{ 
   1}; end 

1.2 nargout的用法

unction c = test(a,b) switch nargout case 1 c = [sin(1:a),cos(1:b)]; otherwise plot([sin(1:0.1:a),cos(1:0.1:b)]) end end 

当在命令行输入

test(1020

在这里插入图片描述
当输入:

c = test(10,20) 

会展示具体的数值信息。

【函数实例】函数sum的功能是输出a和b的和,显示点(a,b)。 eg:function s=sum(a,b) if nargin==0 a=0;b=0; elseif nargin==1 b=0; end s=a+b; plot(a,b); if(nargout==1) s=1; end 

2. varargin和varargout函数

2.1 varargin用法

那么在这个函数里,varargin就是一个cell数组,它包含了用户输入的参数。下面是一个例子:

function test(varargin) disp(['nargin is ' num2str(nargin)]); for v=1:numel(varargin) disp(['varargin{' num2str(v) '} class is ' class(varargin{ 
   v})]); end 

完全就是使用cell数组的方法来处理用户输入的个数不定的参数,如果我们这样调用这个函数:

test()

会得到结果:

nargin is 0

表示用户输入参数个数为0个,就是没有输入参数。

如果这样调用:

test(1,‘a’,uint8(32),‘’);

会得到结果:

Varargout和Varargin的功能正好相反!

2.1 varargout用法

varargout调用者调用该函数时根据需要来改变输出参数的个数,以元胞数组保存形式保存。

varargout是一个元胞数组,用来存储输出参数。利用它的好处是输出参数的个数可变,可以根据情况改变输出参数的个数

Varargout

varargout是一个元胞数组,用来存储输出参数。利用它的好处是输出参数的个数可变,可以根据情况改变输出参数的个数

Varargout和Varargin的功能正好相反!

在使用varargout时的注意事项如下:

1。被调用函数(使用varargout输出)中需定义varargout{1}=…;varargout{i}=…;

2。调用函数方需使用[var1,var2,…,varn]=fun()的形式,而不是[var1,varout]=…,其中varout为cell的形式;

3. 特别鸣谢

https://blog.csdn.net/_/article/details/

https://blog.csdn.net/zssyu0416/article/details/

https://blog.csdn.net/SMF0504/article/details/?utm_medium=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-OPENSEARCH-1.channel_param

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136696.html

(0)
上一篇 2025-06-25 18:15
下一篇 2025-06-25 18:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信