You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB R2020b如何用uigetfile/uigetdir批量选取多文件夹下指定类型文件

解决MATLAB R2020b跨子文件夹批量选取.mat文件的问题

方法一:通过uigetdir+递归搜索(推荐,适合批量处理)

uigetdir本身不能直接选文件,但可以先用来指定父目录,再结合MATLAB的递归文件搜索功能一次性获取所有子文件夹里的.mat文件,步骤如下:

  1. 选择目标父目录
parentDir = uigetdir('请选择包含子文件夹的父目录');
if parentDir == 0
    return; % 用户取消选择,直接退出
end
  1. 递归搜索所有子文件夹中的.mat文件
    MATLAB R2016b及以后版本支持**通配符实现递归搜索,你的R2020b完全适配:
% 搜索父目录下所有层级子文件夹中的.mat文件
matFilesInfo = dir(fullfile(parentDir, '**', '*.mat'));
  1. 提取所有文件的完整路径
% 拼接文件夹路径和文件名,得到每个文件的完整路径
fileFullPaths = fullfile({matFilesInfo.folder}, {matFilesInfo.name});

现在fileFullPaths就是所有分散在子文件夹中的.mat文件路径列表,直接循环这个列表就能批量处理文件了。


方法二:循环调用uigetfile手动选择(适合需手动筛选的场景)

如果不想一次性获取所有文件,而是需要手动挑选不同文件夹里的目标文件,可以循环调用uigetfile,让用户多次选择不同目录下的文件:

selectedFilePaths = {};
while true
    % 弹出文件选择窗口,支持多选
    [selectedFiles, selectedDir] = uigetfile(...
        '*.mat', ...
        '选择.mat文件(可多选,点击取消结束选择)', ...
        'MultiSelect', 'on');
    
    if selectedFiles == 0
        break; % 用户取消选择,结束循环
    end
    
    % 处理单选和多选的情况
    if ischar(selectedFiles)
        selectedFiles = {selectedFiles};
    end
    
    % 拼接完整路径并添加到列表
    fullPaths = fullfile(selectedDir, selectedFiles);
    selectedFilePaths = [selectedFilePaths, fullPaths];
end

这个方法需要你手动逐个打开不同文件夹选文件,适合文件数量不多或需要精准筛选的情况,但几百个文件的话更推荐方法一。

内容的提问来源于stack exchange,提问作者AmericanJael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 12:37:06