Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 从变量读取可变长度的MATLAB参数

我有一个带有可变参数的函数,以标准方式声明:

[] = foo ( varargin ) 我想从另一个函数中调用它,但是要以编程方式指定参数。我最好的尝试是这样的:

% bar isn't populated like this, but this is how it ends up bar = { 'var1' 'var2' 'var3' }; foo( bar ); 但是,将bar放入1x1单元阵列中,并没有按照我的意图解释为1x3单元阵列。我无法更改foo,所以有解决方法吗?


回答:
如果您要在某个地方收集变量a , b和c并最终将其作为一系列输入传递给函数,则可以执行以下操作:

inArgs = {abc}; % Put values in a cell array foo(inArgs{:}); inArgs{:}语法从单元格数组中提取所有值作为逗号分隔的list 。因此,以上等效于此:

foo(a,b,c); 如果将foo编写为接受可变长度的参数列表 ,则varargin变量最终将是一个1×3单元格数组,其中每个元素都存储一个单独的输入参数。基本上, varargin看起来与变量inArgs 完全一样。如果您对foo的调用未使用{:}运算符:

foo(inArgs); 那么varargin变量将是1×1单元格数组,其中第一个元素本身就是inArgs的单元格数组。换句话说, foo将只有1个输入(1×3单元格数组)。



更多&回答...
poster 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 23:32


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.