Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有一个带有可变参数的函数,以标准方式声明:
[] = 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单元格数组)。 更多&回答... |
![]() |
![]() |