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

Matlab计算多个同尺寸三维.mat文件对应元素长期均值的方法

Matlab实现多.mat三维矩阵逐位置长期均值计算落地方案

适用场景:2000-2020年共21个尺寸为72×70×8760(纬度×经度×时序值)的.mat格式数据,计算所有文件对应格点位置的长期均值,输出同尺寸.mat结果文件。


前置准备

  • 新建一个独立文件夹,把21个待处理的原始.mat文件全部放进去,文件夹路径不要包含中文,避免老版本Matlab识别报错
  • 提前确认所有.mat文件内存储三维矩阵的变量名一致(可单独加载一个文件到Matlab工作区查看变量名,比如多数人存的变量名是data/pre/temp这类)
  • 提前排查坏文件:确认每个文件内的矩阵尺寸都是72×70×8760,没有缺维、损坏的文件

完整可直接运行代码

把代码复制到Matlab脚本文件里,按照注释修改对应参数即可运行:

%% 第一步:配置文件路径
% 替换成你自己存放21个原始mat文件的文件夹路径,比如Windows下复制文件夹地址栏的路径粘贴进来即可
input_folder = 'D:\climate_data\yearly_mat';
% 自动扫描文件夹下所有后缀为.mat的文件
file_list = dir(fullfile(input_folder, '*.mat'));
file_num = length(file_list);

% 自动校验文件数量,不是21个直接报错提醒
if file_num ~= 21
    error('当前文件夹下检测到%d个.mat文件,不是需要的21个,请检查路径是否正确、是否混入其他mat文件', file_num);
end

%% 第二步:预分配内存创建累积矩阵
% 初始化一个和目标尺寸完全一致的全零矩阵,预分配内存可以大幅提升运行速度
long_term_mean = zeros(72, 70, 8760);

%% 第三步:循环读取所有文件累加数值
for idx = 1:file_num
    % 拼接当前读取文件的完整路径
    current_path = fullfile(file_list(idx).folder, file_list(idx).name);
    % 读取mat文件,注意把这里的'data'替换成你自己文件里的实际变量名
    load_res = load(current_path, 'data');
    current_mat = load_res.data;

    % 自动校验当前文件的矩阵尺寸,不符合要求直接报错提示
    if ~isequal(size(current_mat), [72, 70, 8760])
        error('第%d个文件「%s」的矩阵尺寸不符合72×70×8760的要求,请检查文件', idx, file_list(idx).name);
    end

    % 把当前矩阵的数值累加到结果矩阵上
    long_term_mean = long_term_mean + current_mat;
    % 打印进度,方便查看运行状态
    fprintf('已完成%d/%d个文件的读取累加\n', idx, file_num);
end

%% 第四步:计算平均值
% 总共有21年的数据,累加值除以21就是对应位置的长期均值
long_term_mean = long_term_mean / 21;

%% 第五步:保存结果为.mat格式
% 结果默认存在原始数据文件夹里,文件名为long_term_mean.mat,变量名和原始维度保持一致
save(fullfile(input_folder, 'long_term_mean.mat'), 'long_term_mean');
fprintf('全部计算完成,结果文件已保存到指定文件夹\n');

初学者操作注意事项

  • 变量名替换:如果你的.mat文件里的矩阵变量名不是data,需要把代码里load函数里的'data',以及load_res.data里的data统一替换成你自己的实际变量名,否则会报找不到变量的错
  • 结果文件存放:计算得到的long_term_mean.mat如果和原始文件存在同一个文件夹里,下次重新跑代码前一定要把这个结果文件移出去,否则代码会把它当成原始文件读入,触发文件数量校验报错
  • 内存不足处理:如果运行时提示内存不足,先在命令行输入clear清空当前工作区的其他冗余变量再运行,单份72×70×8760的双精度矩阵仅占28MB左右,普通办公电脑完全可以流畅运行
  • 结果校验:跑完可以随机选1-2个格点位置(比如第10行第20列第100个时次),手动提取21个文件对应位置的数值算平均值,和输出结果对比,确认计算逻辑正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 17:03:20