nargin与varnargin
来源:互联网 发布:增值税发票识别软件 编辑:程序博客网 时间:2024/05/22 18:22
在一个m文件中,调用nargin能够返回一个函数的参数数目,例如:
function g=mytest(x,y,z);
n = nargin;
那么n的个数为3。
MATLAB中提供一个函数nargchk来检查参数个数是否符合要求。在说明这个函数的作用之前先简单介绍另一个函数的作用:
error(string);
string是一个字符串,当string不为空时,调用该error的函数终止,输出string的内容;而当string为空时,error不做任何反应。
msg = nargchk(low,high,number);当number小于low时,那么nargchk返回一个“Not enough input parameters”;当number大于high时,那么nargchk返回“Too many input parameters”;当number符合要求时,返回空的字符串。
function g = mytest2(x,y,z)
error(nargchk(2,3,nargin));
那么理论上输入mytest2(1),会输出“Not enough input parameters”;输入mytest2(1,2,3,4),会输出“Too many input parameters”;系统内部就是按照这个原理进行系数个数检测的。
另外需要说明的是,高级版本的MATLAB已经使用narginchk代替nargchk。
我们经常会遇到需要编写一个函数,但是其参数数量不能确定,需要根据调用时的实际情况来确定;或者参数的类型是差别很大的,很难统一输出处理;此时在定义的时候使用varnargin便是一个不错的选择。下面通过例子来说明:
function retvar = vartest(varargin)
optargin = size(varargin, 2); % 输入的可变参数的数量,注意和nargin的区别,可以结合下一例子比较
ndims(varargin)%varargin的维度,向量是二维的;a[x][y][z]这个数组时3维的
varargin% varargin得内容
stdargin = nargin - optargin; % nargin是实际参数的总数量
fprintf('Number of inputs: %d\n', nargin);
fprintf('Inputs from individual arguments: %d\n', stdargin)
for k = 1:size(varargin, 2)
fprintf('%d: %d\n', k, varargin{k});
end
end
>> vartest(1, 2, 3)
ans = 2
varargin =
[1] [2] [3]
Number of inputs: 3
Inputs from individual arguments: 0
1: 1
2: 2
3: 3
例子2
function vartest_2(arg1, argb, varargin)%注意和上一个函数的参数做比较,这里的可变参数是从第三个开始的,说明调用函数时最少传递2个参数
optargin = size(varargin, 2);
stdargin = nargin - optargin;
fprintf('Number of inputs: %d\n', nargin);
fprintf('Inputs from individual arguments: %d\n', stdargin)
for k = 1:size(varargin, 2)
fprintf('%d: %d\n', k, varargin{k});
end
end
这次我们调用:
>> vartest_2(1, 2, 3)
Number of inputs: 3
Inputs from individual arguments: 2
1: 3
- nargin与varnargin
- nargin
- nargin
- matlab中varargout与nargout,varargin与nargin的区别
- matlab中varargout与nargout,varargin与nargin的区别
- matlab中varargout与nargout,varargin与nargin的区别
- matlab获取函数参数数目nargout与nargin
- varargin/nargin
- matlab中nargin用法
- nargin 和 nargout
- nargin 输入变量个数
- matlab之nargin函数
- Matlab中的nargin命令
- nargchk和nargin
- matlab中nargin函数
- MATLAB nargin,nargout,inputname
- 【matlab】nargin解读
- matlab中的nargin
- (转)win7 防火墙开启ping
- (转)session和cookie的一些理解
- stringstream替换sprintf
- lua 与 c/c++ 交互(5) lua调用c/c++
- 快速冪
- nargin与varnargin
- 想成为嵌入式程序员应知道的16个基本问题
- Oracle进程
- Linux常用命令(五十三) - wget
- 邻接表和邻接矩阵手写简洁代码DFS BFS
- 学习cocos2dx3.x打包APK
- nyoj-216-A problem is easy
- JQuery常用操作
- 透析SPFA算法(图例讲解)