我有一个功能,需要可变数量的输入,例如myfun(x1,x2,x3,...)
。在Matlab中,对于多输入函数,如何将单个输入用作多个输入?
现在,如果我有输入存储在结构数组S中,我想要做类似 myfun(S.x1,S.x2,...)
。我该怎么做呢?
我有一个功能,需要可变数量的输入,例如myfun(x1,x2,x3,...)
。在Matlab中,对于多输入函数,如何将单个输入用作多个输入?
现在,如果我有输入存储在结构数组S中,我想要做类似 myfun(S.x1,S.x2,...)
。我该怎么做呢?
您可以先使用STRUCT2CELL将您的结构转换为单元阵列,然后使用它来生成多个输入的列表。
S = struct('x1','something','x2','something else');
C = struct2cell(S);
myfun(C{:});
注意,在其中在S
的字段定义的顺序是其中输入被传递的顺序。要检查这些字段的顺序是否正确,可以在S
上运行fieldnames
,它将返回一个单元格,其中的字段名称对应于C
中的值。
东西添加到乔纳斯的回答:其实你可以省略结构,去正确的单元格,然后将其扩展成一个列表的函数的参数:
c = {125, 3};
nthroot(c{:})