Octave中如何获取函数传入的所有参数并转为列表用于后续计算
在MATLAB中可以直接用内置的varargin关键字实现动态参数收集,无需自定义额外方法,具体实现逻辑如下:
- 第一步修改函数定义,将参数列表替换为
varargin,该变量会自动存储所有传入的参数,格式为元胞数组 - 如果需要保留前两个固定参数的命名,也可以写成
function f=myFunc(arg1,arg2,varargin),varargin会存储除前两个参数外的剩余入参 - 用
nargin内置变量可以获取当前传入的参数总数,用来做最少2个参数的合法性校验 - 用
cell2mat()可以将varargin元胞数组转为普通数值数组,直接传入prod()计算乘积
完整示例代码
function f = myFunc(varargin) % 入参数量校验 if nargin < 2 error('myFunc 要求至少传入2个参数'); end % 所有入参转为数值数组 all_args = cell2mat(varargin); % 计算乘积 f = prod(all_args); end
调用测试
执行myFunc(2.0,3.4,1.6)会返回计算结果10.88,和预期一致。
如果需要保留前两个参数的显式命名,可以用以下写法:
function f = myFunc(arg1,arg2,varargin) if nargin < 2 error('myFunc 要求至少传入2个参数'); end % 拼接所有参数 all_args = [arg1, arg2, cell2mat(varargin)]; f = prod(all_args); end
内容的提问来源于stack exchange,提问作者mykael
相关产品推荐
相关产品推荐

