首页 文章

将excel导入matlab

提问于
浏览
0

我在同一目录中有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 回答

  • 0

    我不确定我是否理解你的问题,但你所要做的就是连接包含目录(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}];
    
  • 0

    看看this helper function,由matlab社区的一名成员撰写 . 它允许您递归搜索目录以查找与特定模式匹配的文件 . 这是一个在查找文件时使用的超级便利功能 .

    您应该能够在一次调用此函数的过程中找到所有文件 . 然后,您可以循环遍历rdir函数的结果,将文件一次加载到您想要的任何数据结构中 .

相关问题