有时,在定义函数时,输入参数的数量是未知的。举个例子,想象一个函数,它返回所有输入参数的smallesto。例如
a=最小(1,2,3);b=最小(1,2,3,4);
在这个例子中a
和b
将是1。编写的一种方法最小的
函数为
函数val=最小(arg1、arg2、arg3、arg4、arg5)</body>结束函数
然后使用的值函数输入变量数
以确定应考虑哪些inputarguments。这种方法的问题在于它只能处理有限数量的输入参数。
如果特殊参数名称变精蛋白
出现在函数参数列表的末尾,表示该函数采用可变数量的输入参数。使用变精蛋白
函数看起来是这样的
函数val=最小(varargin)</body>结束函数
在函数体中,可以通过变量访问输入参数变精蛋白
。此变量是包含所有输入参数的元胞数组。详见元胞数组,了解有关使用元胞数组的详细信息。这个最小的
函数现在可以这样定义
函数val=最小(varargin)val=最小([varargin{:}]);结束函数
这个实现可以处理任意数量的输入参数,但它也是一个非常简单的问题解决方案。
稍微复杂一点的例子变精蛋白
是一个函数打印参数
打印所有输入参数。这样的函数可以这样定义
i=1的函数print_arguments(varargin):长度(vararggin)printf(“输入参数%d:”,i);disp(varargin{i});endforend函数
此函数返回如下输出
print_arguments(1,“两个”,3);-|输入参数1:1-|输入参数2:两个-|输入参数3:3
[规则,道具] =
sparseparams (params)
¶
[规则,var1, …] =
sparseparams (params,名称1,default1, …)
¶
返回规则的元胞元素param直到第一个字符串元素,并且在道具从第一个字符串元素开始的所有剩余元素。
例如
〔reg,prop〕=sparseparams({1,2,“线宽”,10})reg={[1,1]=1[1,2]=2}prop={[1,1]=线宽[1,2]=10}
sparseparams函数可用于将常规数值参数与作为的属性/值对提供的附加参数分开变精蛋白元胞数组。
在调用的第二种形式中,直接指定可用参数,并将其默认值作为名称-值对。如果params不要形成名称-值对,或者如果出现与任何可用参数都不匹配的参数,则会发生错误。
从m文件函数调用时,错误的前缀是调用方函数的名称。
参数的匹配不区分大小写。
详见: 变精蛋白,inputsparser.
版权所有 © 2024 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号