Matlab中文件夹名称的正确写法及字符串索引问题处理
Matlab多文件夹遍历代码修正方案
问题根源
你当前定义folder_dates时使用方括号包裹字符串,生成的是字符数组,每个索引位置对应单个字符,因此调用folder_dates(1)时只会返回第一个字符'2'。同时外层循环的遍历逻辑也存在错误。
修正步骤
- 第一步:调整
folder_dates的定义格式,使用字符串数组(R2016b及以后版本支持)或者元胞数组存储多个文件夹名,确保单个索引可以返回完整的文件夹名字符串:
% 方案1:字符串数组(推荐,写法更简洁) folder_dates = ["20210426", "20210427", "20210428"]; % 后续新增文件夹直接在数组内添加即可 % 方案2:元胞数组(兼容所有Matlab老版本) % folder_dates = {'20210426', '20210427', '20210428'};
- 第二步:修改外层循环的遍历条件,原逻辑
for i=1:length(folder_dates(i))属于逻辑错误,应遍历folder_dates的所有元素。 - 第三步(可选优化):原代码重复删除前两个条目过滤
.和..的方式不稳定,可通过isdir属性直接筛选文件夹条目,自动过滤特殊目录和普通文件,逻辑更鲁棒。
完整修正后代码
% 定义目标根文件夹列表 folder_dates = ["20210426"]; % 按需添加更多文件夹名 all_subfolder_list = strings(1,0); % 可选:用于存储所有子文件夹的全路径,方便后续调用 for i = 1:length(folder_dates) current_root_folder = folder_dates(i); % 读取当前根文件夹下的所有条目,仅保留文件夹 sessions = dir(current_root_folder); sessions = sessions([sessions.isdir]); for j = 1:length(sessions) current_session_path = fullfile(sessions(j).folder, sessions(j).name); % 读取session目录下的所有roi子文件夹 roi_regions_folders = dir(current_session_path); roi_regions_folders = roi_regions_folders([roi_regions_folders.isdir]); % 可选:将子文件夹路径存入总列表 for k = 1:length(roi_regions_folders) all_subfolder_list(end+1) = fullfile(roi_regions_folders(k).folder, roi_regions_folders(k).name); end end end
验证方法
修改后在命令行输入folder_dates(1),即可返回完整的文件夹名字符串"20210426"。
内容的提问来源于stack exchange,提问作者Kadaj13
相关产品推荐
相关产品推荐

