快速问题。
我有一个列出不同名称的excel文件。我将这些名称导入Matlab,执行计算,然后将数据保存为.dat文件。
例如:
Apple.dat: 2, 5, 50, 2993
Orange.dat: 5003, 292, 29, 2994
Banana.dat: 3992, 3, 39, 2995
然后我用eval读取每个单独的.dat文件,并将数据/矩阵作为单独的变量加载到主工作区中。此时,我拥有WorkSpace中的所有变量以及包含此列表的单元格文件(ListofVariables)。
我的主要目标是在不知道名字的情况下访问每个变量 - 因为我的Excel文档会随着时间的推移而发生变化!但是,如果我输入:
ListofVariables(i,1)
它只会提取Apple'而不是与变量Apple相关的数据。是否可以访问变量'数据不知道他们的个人名字?
感谢您的帮助!
答案 0 :(得分:2)
您可以使用eval:
%// Simulate loading .dat files
apple = [2 5 50 2993];
orange = [5003 292 29 2994];
banana = [3992 3 39 2995];
ListofVariables = {'apple', 'orange', 'banana'};
%// load data to a structure
data = [];
for k=1:numel(ListofVariables)
name = ListofVariables{k};
data = setfield(data, name, eval(name));
end
%//The data from all files is in the structure data
%// load data to a cell
data = {};
for k=1:numel(ListofVariables)
name = ListofVariables{k};
data(end+1) = eval(name);
end
%//The data from all files is in the cell (the names are lost, but you can access them by index, using the same order as ListofVariables)