自动从工作区访问变量的值

时间:2018-01-31 02:14:24

标签: matlab variables

我正在加载一个循环,其中每次迭代都会加载不同的变量。每个变量的名称在每次迭代中都是不同的。无论如何在Matlab中自动访问该变量的值。到目前为止,我已经尝试过这样:

for i=1:4
    str_load=strcat (fold_str, 'class_',class{:,i}, \Feeds_',files{:,i},'.mat');
    load(str_load)
    variables = who;
    var = strncmpi(variables,'Feed_A',6);
    chk=find(var==1);
    org_var=variables(chk,:);

end

我可以在org_var中找到目标变量的名称。但是我怎样才能访问其中的值?

1 个答案:

答案 0 :(得分:3)

eval函数将评估变量名称并返回其值:

value = eval('org_var');

但更好的解决方案是捕获load的输出:

data = load(str_load);

不是将所有变量加载到工作区中(并且可能更改循环中所需的任何变量),而是将它们加载到结构data中。现在你有:

value = data.Feed_A;

您也可以

variables = fieldnames(data);

如果您需要的变量名称是字符串,

var = 'Feed_A';
value = data.(var);