【发布时间】:2011-06-12 22:09:20
【问题描述】:
我有一个函数接受可变数量的输入,比如myfun(x1,x2,x3,...)。
现在,如果我将输入存储在结构数组 S 中,我想做类似的事情
myfun(S.x1,S.x2,...)。我该怎么做?
【问题讨论】:
标签: matlab
我有一个函数接受可变数量的输入,比如myfun(x1,x2,x3,...)。
现在,如果我将输入存储在结构数组 S 中,我想做类似的事情
myfun(S.x1,S.x2,...)。我该怎么做?
【问题讨论】:
标签: matlab
您可以先使用STRUCT2CELL 将结构转换为元胞数组,然后使用它生成多个输入的列表。
S = struct('x1','something','x2','something else');
C = struct2cell(S);
myfun(C{:});
请注意,S 中字段的定义顺序是输入传递的顺序。要检查字段的顺序是否正确,您可以在S 上运行fieldnames,它会返回一个单元格,其字段名称对应于C 中的值。
【讨论】:
在 Jonas 的回答中添加一些内容:实际上你可以省略结构并直接进入单元格,然后将其展开为函数参数列表:
c = {125, 3};
nthroot(c{:})
【讨论】: