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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:06:25