我正在加载一个循环,其中每次迭代都会加载不同的变量。每个变量的名称在每次迭代中都是不同的。无论如何在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
中找到目标变量的名称。但是我怎样才能访问其中的值?
答案 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);