使用dynamic名称访问Matlab工作区variables

快速的问题。

我有一个列出不同名称的Excel文件。 我将这些名称导入Matlab,执行计算,然后将数据保存为.dat文件。

例如:

Apple.dat: 2, 5, 50, 2993 Orange.dat: 5003, 292, 29, 2994 Banana.dat: 3992, 3, 39, 2995 

然后,我用eval读取每个单独的.dat文件,并将数据/matrix作为单个variables加载到主工作区中。 此时,我拥有WorkSpace中的所有variables以及包含此列表(ListofVariables)的单元格文件。

我的主要目标是在不知道名字的情况下访问每个variables – 因为我的Excel文档将随着时间而改变! 但是,如果我input:

 ListofVariables(i,1) 

它只会拉起“苹果”,而不是与variables苹果相关的数据。 有没有知道他们的个人名字访问variables的数据?

感谢您的帮助!

你可以使用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)