【问题标题】:In Matlab, for a multiple input function, how to use a single input as multiple inputs?在Matlab中,对于一个多输入函数,如何将单个输入用作多个输入?
【发布时间】:2011-06-12 22:09:20
【问题描述】:

我有一个函数接受可变数量的输入,比如myfun(x1,x2,x3,...)

现在,如果我将输入存储在结构数组 S 中,我想做类似的事情 myfun(S.x1,S.x2,...)。我该怎么做?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    您可以先使用STRUCT2CELL 将结构转换为元胞数组,然后使用它生成多个输入的列表。

    S = struct('x1','something','x2','something else');
    C = struct2cell(S);
    myfun(C{:});
    

    请注意,S 中字段的定义顺序是输入传递的顺序。要检查字段的顺序是否正确,您可以在S 上运行fieldnames,它会返回一个单元格,其字段名称对应于C 中的值。

    【讨论】:

      【解决方案2】:

      在 Jonas 的回答中添加一些内容:实际上你可以省略结构并直接进入单元格,然后将其展开为函数参数列表:

      c = {125, 3};
      nthroot(c{:})
      

      【讨论】:

        最近更新 更多