如何在MATLAB中将目录下的多个.mat文件加载到数组中?
批量加载目录下的.mat文件到数组
实现步骤
- 指定目标目录路径,避免重复编写路径字符串
- 用
dir函数筛选出目录下所有.mat后缀的文件 - 用cell数组存储加载结果(每个.mat文件的内容结构可能不同,cell数组比普通数组更灵活适配)
- 循环遍历所有.mat文件,逐个加载并存入cell数组
完整可运行代码
% 定义目标目录的完整路径 target_dir = 'C:\Users\me\OneDrive\Desktop\project\a'; % 获取目录下所有.mat格式的文件 mat_files = dir(fullfile(target_dir, '*.mat')); % 初始化cell数组,长度等于.mat文件的数量 loaded_arr = cell(1, length(mat_files)); % 循环加载每个文件 for idx = 1:length(mat_files) % 拼接当前文件的完整路径 full_path = fullfile(target_dir, mat_files(idx).name); % 加载文件并存入cell数组 loaded_arr{idx} = load(full_path); end
访问加载后的内容
- 访问第N个文件的内容:直接用
loaded_arr{N},比如loaded_arr{1}对应你原来的x1,loaded_arr{2}对应x2 - 如果每个.mat文件里只存了一个同名变量(比如都叫
raw_data),可以把所有变量提取到一个普通数组里:% 提取所有文件中的raw_data变量到数组 data_array = [loaded_arr{:}.raw_data];
关于你遇到的错误
你之前碰到的error using eval, undefined function 'workspacefun' for input arguments of type struct,是因为错误使用了eval配合dir的写法(比如尝试用eval直接处理dir返回的struct)。完全不需要用eval,改用上面的循环+cell数组的方式就能避免这个问题。
内容的提问来源于stack exchange,提问作者molam7
相关产品推荐
相关产品推荐

