MATLAB 查找文件夹中的所有文件及其子文件夹扩展名为 .txt 并使用 textscan 读取

MATLAB Find all files in folder with subfolders with extension .txt and read with textscan

我想在包含子文件夹的文件夹中查找所有扩展名为 .txt 的文件。这些子文件夹包含我想使用文本扫描功能阅读的 .txt-files。

.txt-files 包含数字和 header 行:

A B C D
1 0.4 23 42
2 0.3 32 34

这是我试过的。但我总是得到错误:

Error using fopen
Invalid permission.

我做错了什么?我已经尝试使用我在互联网上找到的代码,但它对我的问题不起作用。

dirinfo = dir();
    dirinfo(~[dirinfo.isdir]) = [];  %remove non-directories

    subdirinfo = cell(length(dirinfo));
    for k = 1 : length(dirinfo)
        thisdir = dirinfo(k).name;
        subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));

        for m=1:length(subdirinfo)
            for n=1:length(subdirinfo{m})
                fileID = fopen(subdirinfo{m,n}.name);
                C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
                fclose(fileID);
                % do stuff
            end
        end 
    end

谢谢你帮助我!

代码基本没问题,但你应该去掉'.'和 '..' 目录,只对 subdirinfo 进行一个子查询,你需要给 fopen 目录:

dirinfo = dir();
dirinfo(~[dirinfo.isdir]) = [];  %remove non-directories
dirinfo(ismember({dirinfo.name}, {'.', '..'})) = [];
subdirinfo = cell(length(dirinfo), 1);
for k = 1 : length(dirinfo)
    thisdir = dirinfo(k).name;
    subdirinfo{k} = dir(fullfile(thisdir, '*.txt'));
    for n=1:length(subdirinfo{k})
        fileID = fopen(fullfile(thisdir, subdirinfo{k}(n).name));
        C = textscan(fileID,'%f32 %f32 %f32 %f32','HeaderLines',1);
        fclose(fileID);
        % do stuff
    end
end