使用MATLAB遍历指定的子文件夹及其下文件

本文介绍了如何在MATLAB中遍历指定文件夹及其子文件夹内的图像。通过使用dir函数获取文件信息,结合uigetdir函数实现交互式选择文件夹,以便对图像进行批量处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件目录结构

项目需要批量将图像导入Matlab,进行分类。

/maindir
    |-- subdir1
        |-- test1.bmp
        |-- test2.bmp
        |-- ...
    |-- subdir2
        |-- test3.bmp
        |-- test4.bmp
        |-- ...
    |-- subdir3
        |-- test5.bmp
        |-- test6.bmp
        |-- ...
    |-- ...

主文件夹maindir下含有十个子文件夹,子文件夹分别包含多个图像bmp文件。


函数dir

可以使用函数dir,D = DIR(‘directory_name’)返回一个结构数组,包含了文件夹directory_name下的子文件夹和子文件的一些信息,第1个成员是文件名,第4个成员表示是否为文件夹。

%DIR List 
### 遍历子文件夹的方法 为了在 MATLAB遍历指定目录及其所有子文件夹中的文件,可以采用递归方法来实现这一功能。下面提供了一种通过函数 `getAllFiles` 来获取给定路径下所有的 `.avi` 文件列表的方式[^1]。 ```matlab function fileList = getAllFiles(dirName) d = dir(fullfile(dirName, '*.*')); % 获取当前文件夹下的所有文件文件夹信息 fileList = {}; % 初始化文件列表为空 for k = 1:length(d) % 循环遍历每一个条目 thisFile = d(k); if thisFile.isdir % 如果是文件夹,则递归调用本函数继续深入查找 subFolder = fullfile(dirName, thisFile.name); if ~ismember(subFolder, {'.', '..'}) % 排除 '.' 和 '..' 这两个特殊项 fileList = [fileList; getAllFiles(subFolder)]; end elseif endsWith(thisFile.name, '.avi') % 只收集 .avi 类型的文件 fullFileName = fullfile(dirName, thisFile.name); fileList{end+1} = fullFileName; end end end ``` 此代码定义了一个名为 `getAllFiles` 的函数,该函数接收一个参数 `dirName` 表示起始搜索位置,并返回一个包含找到的所有 `.avi` 文件绝对路径字符串数组的结果。对于每个遇到的子文件夹,都会再次调用自己来进行更深层次的探索直到最底层为止;而对于匹配到的目标文件则记录其完整路径至最终输出列表中去。 使用上述自定义函数前需先设置好初始工作区: ```matlab % 设置目标根目录 rootDir = uigetdir('D:\Sequences\Weizmann\bend', 'Select Directory'); if rootDir(end) ~= '\' rootDir = [rootDir, '\']; end % 调用函数并显示结果 allAVIfiles = getAllFiles(rootDir); disp(allAVIfiles); ``` 这段脚本允许用户交互式地选择想要操作的具体磁盘上的某个特定文件夹作为起点,之后便能自动检索出其中全部符合条件(即具有`.avi` 扩展名)的数据对象供后续分析处理之用了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值