excel在matlab中的导入

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

我在同一目录中有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”下的不同文件夹,每个单元格中都有要导入的电子表格的名称。单元格的大小随每个文件夹中的电子表格数量的变化而变化

有什么想法吗

提前感谢

看一看,由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。