代码之家  ›  专栏  ›  技术社区  ›  Nate Parsons

从变量读取可变长度MATLAB参数

  •  3
  • Nate Parsons  · 技术社区  · 16 年前

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

    [] = foo ( varargin )
    

    % bar isn't populated like this, but this is how it ends up
    bar = { 'var1' 'var2' 'var3' }; 
    foo( bar );
    

    2 回复  |  直到 16 年前
        1
  •  10
  •   gnovice    16 年前

    a , b ,以及 c 如果你想在某个地方收集在一起,并最终作为一系列输入传递给一个函数,你可以执行以下操作:

    inArgs = {a b c};  % Put values in a cell array
    foo(inArgs{:});
    

    inArgs{:} 从单元格数组中提取所有值作为 comma-separated list 因此,上述内容相当于:

    foo(a,b,c);
    

    如果 foo 书面接受 variable-length argument list ,然后 varargin 变量最终将是一个1-by3的单元格数组,其中每个元素存储一个单独的输入参数。基本上, 精确地 喜欢变量 inArgs 。如果您致电 没有使用 {:} 操作员:

    foo(inArgs);
    

    然后 可变长度输入参数列表 inArgs 换言之, 将只有1个输入(1-by3单元阵列)。

        2
  •  0
  •   DrAl    16 年前

    eval

    如果你把条形图强迫成这样的字符串 "'var1', 'var2', 'var3'" ,您可以执行以下操作:

    eval(["foo(", barString, ")"])