生态遥感的学习笔记

使用Matlab把日数据合成16天数据

2019-06-28  本文已影响7人  荔枝猪

需求

现有一份日数据,需合成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

小贴士

上一篇下一篇

猜你喜欢

热点阅读