通过单元格中的名称列表重命名工作区中的变量 - MATLAB
Rename a variable in the workspace through a list of names in a cell - MATLAB
我在 excel 文件中有一些数据。
首先,我读取文件并通过以下命令创建存储在单元格中的姓名列表:
[status,sheets] = xlsfinfo(filename);
我得到:
sheets = {'A1','A2','B1','B2','C1'};
(这些是 excel 文件中 excelsheet 的名称)
通过一些过程,我获得了每个名称的矩阵 (excelsheets)。每个的最终矩阵称为:
completeData = [x,v,z,y,s];
现在,我想:
将 "completeData" 变量的名称更改为其对应的每个 excelsheet(来自 "sheets" 单元格)。
然后用它对应的excelsheet的名称保存这个新重命名的变量(旧的"completeData")(同样来自"sheets"单元格).
到目前为止,我只设法保存了每个 excel sheet 的每个完整数据矩阵,分别使用 sheets [这是第 2 点] 的名称这个命令:
save(sprintf('%s',sheets{excelSheet}),'completeData');
(这里我循环了 "excelsheet")
问题是,当我管理 excel sheets,并将它们全部保存在我硬盘的一个文件夹中时,每当我 运行 这些保存的变量中的任何一个我在工作区中获取 "completeData",这不是我想要的。我还想获得 excelsheet.
的名称
我该怎么做?
P.S。通过这个命令:
eval(sprintf([sheets{excelsheet} '=completeData;']));
(再次循环 excelsheet)
我已经设法创建了几个名称为 excel sheet 的矩阵。但是我不知道如何通过循环保存这些非常好的新创建的变量,这样我就不用一个一个了。
根据上面的评论,我试着给你写了一个简单的例子:
%% 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
我在 excel 文件中有一些数据。
首先,我读取文件并通过以下命令创建存储在单元格中的姓名列表:
[status,sheets] = xlsfinfo(filename);
我得到:
sheets = {'A1','A2','B1','B2','C1'};
(这些是 excel 文件中 excelsheet 的名称)
通过一些过程,我获得了每个名称的矩阵 (excelsheets)。每个的最终矩阵称为:
completeData = [x,v,z,y,s];
现在,我想:
将 "completeData" 变量的名称更改为其对应的每个 excelsheet(来自 "sheets" 单元格)。
然后用它对应的excelsheet的名称保存这个新重命名的变量(旧的"completeData")(同样来自"sheets"单元格).
到目前为止,我只设法保存了每个 excel sheet 的每个完整数据矩阵,分别使用 sheets [这是第 2 点] 的名称这个命令:
save(sprintf('%s',sheets{excelSheet}),'completeData');
(这里我循环了 "excelsheet")
问题是,当我管理 excel sheets,并将它们全部保存在我硬盘的一个文件夹中时,每当我 运行 这些保存的变量中的任何一个我在工作区中获取 "completeData",这不是我想要的。我还想获得 excelsheet.
的名称我该怎么做?
P.S。通过这个命令:
eval(sprintf([sheets{excelsheet} '=completeData;']));
(再次循环 excelsheet)
我已经设法创建了几个名称为 excel sheet 的矩阵。但是我不知道如何通过循环保存这些非常好的新创建的变量,这样我就不用一个一个了。
根据上面的评论,我试着给你写了一个简单的例子:
%% 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