我无法在Matlab文档或留言板上找到以下问题的答案。有关动态变量名称的使用以及如何在创建变量时避免使用eval
函数的信息很多。然而,我的查询涉及在循环内访问已编号的预先存在的变量。
考虑有人给我发了一张包含各种字段值的表格。其中一些是编号,我们有类似的东西:
table.abc
table.x1
table.x2
table.x3
table.xyz
我无法更改这些变量的名称,但只想访问循环内的字段x1, x2, x3
。是否有可能以一种巧妙的方式做到这一点,同时避免在这种情况下使用eval
?
使用eval
的示例:
for i=1:3
extract(i) = eval(['table.x',num2str(i)]);
end
答案 0 :(得分:4)
您可以使用getfield
:
for i=1:3
extract(i) = getfield(table,['x',num2str(i)]);
end
甚至更短:
for i=1:3
extract(i) = table.(['x',num2str(i)]);
end