需求
对全球ERA数据进行预处理为自己需要的
代码
%% 先处理ERA一年数据
% 原文件为一年一个的nc格式数据,一个中有12个月,包含温度Ta,露点温度Td两个变量
% 结果:提取出温度Ta,露点温度Td分别为一个元胞,一个月的数据为一个矩阵排为一行
% 先查看nc文件的变量等相关信息
info = ncinfo('D:\vpd\1979.nc');
% 看一下经纬度排列
lon = ncread('D:\vpd\1979.nc','longitude');
lat = ncread('D:\vpd\1979.nc','latitude');
% 确定变量名称等信息后,提取数据
for i = 1:12 %时间维,共12个月
startLoc = [1 1 i]; %读取经度,维度,时间维度的位置
count = [Inf Inf 1]; %经度,维度从开始一直读到最后,时间维度一个一个读取
Ta = ncread('D:\vpd\1979.nc','t2m',startLoc,count);
Ta = Ta - 273.15; %温度单位K转为°C
Ta2 = Ta'; %旋转一下
Td = ncread('D:\yangdong\vpd\1979.nc','d2m',startLoc,count);
Td2 = Td';
Td = Td - 273.15; %温度K转为°C
ERA_Ta{1,i}(:,1:1440) = Ta2(:,1441:2880); %变换排列方式
ERA_Ta{1,i}(:,1441:2880) = Ta2(:,1:1440); %变换排列方式
ERA_Td{1,i}(:,1:1440) = Td2(:,1441:2880);
ERA_Td{1,i}(:,1441:2880) = Td2(:,1:1440);
end
% 显示一月的图,看是否正确(地图是否有旋转/翻转现象)
Taa = ERA_Ta{1,1};
imshow(Taa,[]);
%% 处理多年ERA nc数据,将以上代码编写成函数ERA_nc
% 先创建空元胞
ERA_Ta1979_2018 = {}; ERA_Td1979_2018 = {};
% 利用编写好的函数ERA_nc批量处理,将1979-2018共480个月数据排为一行储存在元胞
for i = 1979:2018
dz = strcat('D:\vpd\',num2str(i),'.nc'); %获取文件夹下的所有nc文件路径名称
[ERA_Ta,ERA_Td] = ERA_nc(dz);
ERA_Ta1979_2018 = [ERA_Ta1979_2018,ERA_Ta];
ERA_Td1979_2018 = [ERA_Td1979_2018,ERA_Td];
end
网友评论