需求
现有一份日数据,需合成16天的数据。
以温度数据为例,每个站点为一个元胞排为一行,每个元胞中第二列为年份,第五列为温度。
代码
function [data_16d] = Day2_16mean(data_d,begin_year,end_year)
% By Yang,2019/5/12
% 将日数据(温度等)平均为16天数据
% 输入:日数据data_d,每个站点一个元胞排为一行,每个元胞(前四列为站点号、年、月、日,第五列为需累加的数据(温度等));
% 输入:开始年份begin_year;结束年份end_year;
% 输出:16天的数据data_16d,每个站点一个元胞排为一行,每个元胞(第一列为begin_year的16天数据。。。最后一列为end_year的16天数据)
M = ceil(365/16); %N为365除以16取大于商的最小整数
%每16天相加,最后剩下的几天相加,结果为B
for y = begin_year:end_year
for k = 1: length(data_d)
for i = 1:M-1
test2 = data_d{1,k}; %遍历每个站点的数据
test3 = test2(data_d{1,1}(:,2)==y,:); %找到对应年的数据分别计算,第2列是年
test4(i,1) = mean(test3(1+16*(i-1):16*i,5)); %每16天数据平均,温度等数据在第5列,如果是降水等数据将mean改为sum
test4(M,1) = mean(test3(1+16*(M-1):end,5)); %每年最后不足16天的剩余天数的数据平均 ,如果是降水等数据将mean改为sum
end
data_16d{1,k}(:,y-begin_year+1) = test4;
end
end
end