通过单元格中的名称列表重命名工作空间中的variables – MATLAB

我有一些excel文件中的数据。

起初,我通过这个命令读取文件并创build存储在单元中的名称列表:

[status,sheets] = xlsfinfo(filename); 

我得到:

 sheets = {'A1','A2','B1','B2','C1'}; 

(这些是excel文件中excelsheets的名称)

并通过一些过程,我得到这些名称(excelsheets)的每个matrix。 每个最后的matrix被称为:

 completeData = [x,v,z,y,s]; 

现在,我想:

  1. 将“completeData”variables的名称更改为其相应的Excel表格(从“sheets”单元格)。

  2. 然后将这个新重命名的variables(旧的“completeData”)与其对应的excelsheet的名称(再次从“sheets”单元格)中保存。

到目前为止,我只设法通过这个命令将每个excel表格的完整数据matrix分别保存为表格的名称[点号2]:

 save(sprintf('%s',sheets{excelSheet}),'completeData'); 

(这里我有一个循环“excelsheet”)

问题是,当我有Excel的工作表,并将其全部保存在我的硬盘上的文件夹,每当我运行这些保存的variables中的任何一个,我得到的“完整的数据”在工作空间,这是不是我想要的。 我也想获得excelsheet的名字。

我怎样才能做到这一点?

PS通过这个命令:

 eval(sprintf([sheets{excelsheet} '=completeData;'])); 

(再次在excelsheet循环)

我已经设法创build了几个excel表单名称的matrix。 但我不知道如何通过一个循环来保存这些非常好的新创build的variables,这样我就不会一个一个的去做。

继上面的评论,我试图给你写一个简单的例子:

 %% Initialise names = {'name1', 'name2', 'name3'}; data = randn(10, 3); %% it create three fields called name1, name2 and name3 from data, in s for ind=1:size(data, 2) s.(names{ind}) = data(:, ind); end 

希望能帮助到你!

所以这是如何工作的:

首先阅读信息:

 [status,sheets] = xlsfinfo(filename); NamesList = sheets(:,1); 

现在,应用主要收集的信息再次阅读详细信息:

 for ind = 1:length(NamesList) % Only read those particular sheets [num,txt,raw] = xlsread(filename,NamesList{ind,:}); var.(NamesList{ind})={txt(:,MyColumn),num}; clear num txt raw end