概述
创建时间序列
datetime格式
t1=datetime(2009,1,1,0,0,0); %[年 月 日 时 分 秒]向量构建
t2=datetime(2016,12,31,23,45,0);
t=t1:minutes(15):t2; % minutes 间隔时间,可以替换为days hours 等
t=t';
t_c=datetime(t,'format','MM/dd/yyyy HH:mm'); % 'MM/dd/yyyy HH:mm'你需要输出的形式,基本实现自由组会
可以转成你需要的数据格式
闰年判断
y_t=1951:2017;
a=366; % 代表闰年
b=365; % 代表平年
c=48; % 每天几个数据,48 是半小时数据 如果是天的话就是1
% 读取闰年平年
for i=1:length(y_t)
if mod(y_t(i),4)==0
y_num(i,1)=a.*c;
else y_num(i,1)=b.*c;
end
end
% 读取多年每年,比如2000年是366天 多年日序列的第yy_num(2000-y_t(1)+1,1):yy_num(2000-y_t(1)+1,2)
for i=2:length(y_num)
yy_num(i,1)=sum(y_num(1:i-1))+1;
yy_num(i,2)=sum(y_num(1:i));
end
yy_num(1,1)=1;
yy_num(1,2)=y_num(1,1);
做月平均
month_pp 大小是12×2,第一列是一年之中每个月开始的日数,第二列是结束的日序(升级版,写成了函数,可以选择是否需要考虑闰年,如果不考虑闰年就是闰年没有2月29日)
function [month_pp] = monln(sd,ed,cal)
%MONLN 本函数的作用是,求两个时间阶段之间的每个月份的取值,具体用于月平均
%
sd 开始的年月 sd=[yr months];
%
ed 结束的年月 ed=[yr months];
%
cal 是否考虑闰年 cal=1 不考虑闰年 cal=0 考虑闰年
%
gggggg
month_p(1,:)=[31 28 31 30 31 30 31 31 30 31 30 31];
month_p(2,:)=[31 29 31 30 31 30 31 31 30 31 30 31];
y_n=ed(1,1)-sd(1,1)+1;
if y_n==1
if mod(sd(1,1),4)==0
month_a=month_p(2-cal,sd(1,2):ed(1,2));
else
month_a=month_p(1,sd(1,2):ed(1,2));
end
else
for y=1:y_n
if mod(sd(1,1)-1+y,4)==0
month_all(1+(y-1)*12:12*y)=month_p(2-cal,:);
else
month_all(1+(y-1)*12:12*y)=month_p(1,:);
end
end
month_a=month_all(1,sd(1,2):end-12+ed(1,2));
end
for i=2:length(month_a)
month_pp(i,1)=sum(month_a(1:i-1))+1;
month_pp(i,2)=sum(month_a(1:i));
end
month_pp(1,1)=1;month_pp(1,2)=month_a(1,1);
end
最后
以上就是年轻黄蜂为你收集整理的Matlab创建时间序列,闰年判断,月平均的全部内容,希望文章能够帮你解决Matlab创建时间序列,闰年判断,月平均所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复