我在同一目录中有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, 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”下的不同文件夹,然后在每个单元格中都是想要导入的电子表格的名称 . 单元格的大小随着每个文件夹中的电子表格数量的不同而变化 .
有任何想法吗?
提前致谢
2 回答
我不确定我是否理解你的问题,但你所要做的就是连接包含目录(f {})和文件名的字符串 . 修改你的代码:
这适用于* nix系统 . 您可能必须在Windows上使用''加入文件名 . 我会找到一种更优雅的方式并更新此帖子 .
Edit :命令
filesep
给出正斜杠或反斜杠,具体取决于您的系统 . 以下内容应该为您提供完整的路径:看看this helper function,由matlab社区的一名成员撰写 . 它允许您递归搜索目录以查找与特定模式匹配的文件 . 这是一个在查找文件时使用的超级便利功能 .
您应该能够在一次调用此函数的过程中找到所有文件 . 然后,您可以循环遍历rdir函数的结果,将文件一次加载到您想要的任何数据结构中 .