使用动态名称访问Matlab工作空间变量

时间:2014-07-23 00:12:56

标签: excel matlab variables workspace

快速问题。

我有一个列出不同名称的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相关的数据。是否可以访问变量'数据不知道他们的个人名字?

感谢您的帮助!

1 个答案:

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