功能:自动根据最早和最晚的日期进行补全中间缺失的日期(包含其他内容)。代码中的最小时间间隔是5分钟。如有其他需要可自行修改。
案例可参考网址:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=59347
function [dataall]=match_loss_datetime(filename)
%% 功能:当日期不完整,自动补全缺失日期和相关数据,返回日期完整的数据
% 缺失日期必须在第一列
% 时间格式是正常的日期格式(必须是)
% 当前最小时间间隔为5分钟,后期再做更改
% 默认t_shift=5/60/24(5分钟)
% Author:zqq0ew0
% Date: 2018.3.12
%%
%% 主程序
[~,~,dataraw]=xlsread(filename); %
[~,row]=size(dataraw);
datetime=datenum(dataraw(2:end,1)); % 日期格式转数值型
[N,~]=size(datetime);
datetime1=cell(N,1);
% 统一时间格式
for i=1:N
datetime1(i)={datestr(datetime(i),'yyyy/mm/dd HH:MM')};
end
datetime2=datenum(datetime1);
ncell=5/60/24;
datetime3=[datetime2(1):ncell:datetime2(N)]'; %生产全的日期格式
[M,~]=size(datetime3);
dataall2=cell(M,row);
for j=1:M
dataall2(j,1)={datestr(datetime3(j),'yyyy/mm/dd HH:MM')};
end
% 查找缺失日期,进行补全
for k=1:N
[~,id]=ismember(datetime1(k),dataall2(:,1));
dataall2(id,2:row)=dataraw(k+1,2:row);
end
dataall=[dataraw(1,:);dataall2];
%%
转载本文请联系原作者获取授权,同时请注明本文来自周勤迁科学网博客。
链接地址:http://blog.sciencenet.cn/blog-628499-1105146.html
上一篇:安装Linux版的hysplit及相关问题集锦-系统Centos
下一篇:分享一个自己编写的工具-Matlab求小时均值