excel在matlab中的导入
我在同一目录中有4个文件夹,每个文件夹包含~19.xls文件。我编写了下面的代码,以获取每个文件夹的名称以及文件夹中每个.xls文件的名称excel在matlab中的导入,matlab,Matlab,我在同一目录中有4个文件夹,每个文件夹包含~19.xls文件。我编写了下面的代码,以获取每个文件夹的名称以及文件夹中每个.xls文件的名称 path='E:\Practice'; folder = path; dirListing = dir(folder); dirListing=dirListing(3:end);%first 2 are just pointers for i=1:length(dirListing); f{i} = fullfile(path, dirLis
path='E:\Practice';
folder = path;
dirListing = dir(folder);
dirListing=dirListing(3:end);%first 2 are just pointers
for i=1:length(dirListing);
f{i} = fullfile(path, dirListing(i,1).name);%obtain the name of each folder
files{i}=dir(fullfile(f{i},'*.xls'));%find the .xls files
for j=1:length(files{1,i});
File_Name{1,i}{j,1}=files{1,i}(j,1).name;%find the name of each .xls file
end
end
现在,我正在尝试使用xlsread将excel中的数据导入matlab。我所要做的是知道如何在excel文件位于不同目录(不同文件夹)的循环中将数据加载到matlab中
这给我留下了一个名为File_Name的1x4单元格,其中每个单元格都指向位于“path”下的不同文件夹,每个单元格中都有要导入的电子表格的名称。单元格的大小随每个文件夹中的电子表格数量的变化而变化
有什么想法吗
提前感谢看一看,由matlab社区的一位成员编写。
它允许您递归地搜索目录,以查找符合特定模式的文件。这是查找匹配文件时使用的一个超级方便的函数
您应该能够在对该函数的一次调用中找到所有文件。然后您可以循环使用rdir函数的结果,一次加载一个文件到您想要的任何数据结构中。我不确定是否理解您的问题,但您所要做的就是将包含目录(f{})和文件名的字符串连接起来。修改您的代码:
for i=1:length(dirListing);
f{i} = fullfile(path, dirListing(i,1).name);%obtain the name of each folder
files{i}=dir(fullfile(f{i},'*.xls'));%find the .xls files
for j=1:length(files{1,i});
File_Name{1,i}{j,1}=files{1,i}(j,1).name;%find the name of each .xls file
fullpath = [f{i} '/' File_Name{1,i}{j,1}];
disp(['Reading file: ' fullpath])
x = xlsread(fullpath);
end
end
这适用于*nix系统。在Windows上,您可能必须使用“\”来连接文件名。我会找到一个更优雅的方式来更新这个帖子
Edit:命令filesep
根据您的系统给出正斜杠或反斜杠。以下内容应为您提供完整路径:
fullpath = [f{i} filesep File_Name{1,i}{j,1}];
您是否需要根据xls文件所在的目录执行不同的操作?或者,当您加载数据时,是否可以对每个XLS文件进行相同的处理?每个文件中的电子表格数量不同,即19、19、19、18。但除此之外,他们的待遇是一样的。到目前为止,我已经写了:for I=1:length(文件名);a(i)=长度(文件名{1,i});对于j=1:a(i)[num{j},txt{j},raw{j}]=xlsread(文件名{1,i}{j,1});但是现在的主要问题是告诉matlab数据存储在不同的方向这和你的问题有关吗?如果是这样,你要做的就是添加子文件夹,确定你在这个问题上有什么。如果你不明白我的答案,请告诉我。gnovice的这个方法非常好。收集所有文件后,只需使用
regexpi
过滤.xls。