大家好,欢迎来到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(10,20)
当输入:
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