需求
对全球MERRA数据进行预处理为自己需要的
代码
%% 先处理一个MERRA数据
% 原文件为一个月一个的nc格式数据
% 结果:提取出温度变量Ta和露点温度Td为一个元胞,一个月的数据为一个矩阵
% 查看nc文件的变量信息
info = ncinfo('D:\vpd\MERRA\MERRA2_100.statM_2d_slv_Nx.198001.nc4.nc');
% 看一下经纬度排列
lon = ncread('MERRA2_100.statM_2d_slv_Nx.198001.nc4.nc','lon');
lat = ncread('MERRA2_100.statM_2d_slv_Nx.198001.nc4.nc','lat');
% 根据确定的变量名称等信息,提取数据
Ta = ncread('MERRA2_100.statM_2d_slv_Nx.198001.nc4.nc','T2MMEAN');
Ta = Ta - 273.15; %温度K转为°C
Taa = rot90(Ta); %逆时针旋转90°
% 显示一月的图,看是否正确(地图是否有旋转/翻转现象)
Taa = rot90(Ta);
imshow(Taa,[]);
%% 处理多年MERRA_nc数据,将以上代码编写成函数MERRA_Ta_nc
% 先创建空元胞
MERRA_Ta1980_2018 = {};
% 输入MERRA数据地址,读取文件夹下所有nc文件,一个文件代表一个月的数据
merra = dir('D:\vpd\MERRA\*.nc');
% 用编写好的MERRA_Ta_nc函数批量处理,将1980-2018共468个月数据从左往右排为一行储存在元胞
for i=1:size(merra,1) %计算文件个数
dz = strcat(merra(i).folder,'\',merra(i).name); %数据的每个文件地址+文件名
MERRA_Ta1980_2018{i} = MERRA_Ta_nc(dz); %利用MERRA_Ta_nc函数提取温度数据
end
% 保存数据
save MERRA_Ta1980_2018.mat MERRA_Ta1980_2018
%% 提取露点温度Td数据同上,改下变量名即可
网友评论