用的是matlab的stepwiselm函数,函数默认是AIC准则(尽可能使模型好解释),这个用的是BIC,尽可能使模型简单,自变量要标准化,消除不同自变量的尺度差异(也是看第一次输出自变量系数有0.04,也有42.02的,感觉这样对比挑出的主导因子不合理),还有一个小细节,读取文件夹中的不同文件时,用自然法排序也就是1、2、3——10,不然有时候排序可能时1,10,2,什么的,不敢确保每年的因变量和自变量是对应的,这是matlab提供的一个函数,natsortfiles,在官网上能下载代码,放在路径里即可,还有就是用了并行处理,希望能快点,上一个代码跑了将近24个小时,出于随时查看进度的考虑,加入了一个进度条表示进度,用已经处理的像元数比上所有像元数。
clc;
clear;
% 设置输入数据路径和输出路径 里面放的都是tif文件
input_dir_cue = 'D:\xi\cue'; % CUE 数据文件夹路径
input_dir_tas = 'D:\xi\tavg'; % 温度(tas)数据文件夹路径
input_dir_sm = 'D:\xi\soil'; % 土壤湿度(sm)数据文件夹路径
input_dir_vpd = 'D:\xi\vpd'; % VPD 数据文件夹路径
input_dir_swr = 'D:\xi\srad'; % 短波辐射(swr)数据文件夹路径
output_dir = 'D:\xi\output_path'; % 输出结果文件夹路径
if ~exist(output_dir, 'dir')
mkdir(output_dir); % 如果输出路径不存在,创建该目录
end
% 获取 CUE 数据和气候因子数据文件列表,并进行自然排序
cue_files = natsortfiles({dir(fullfile(input_dir_cue, 're_xibo_cue_west_*.tif')).name});
tas_files = natsortfiles({dir(fullfile(input_dir_tas, 'masked_tavg_avg_*