在循环中访问编号变量

时间:2015-07-01 13:03:56

标签: matlab loops variables eval

我无法在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

1 个答案:

答案 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