创建时间序列
datetime格式
复制代码
1
2
3
4
5
6t1=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'你需要输出的形式,基本实现自由组会
可以转成你需要的数据格式
闰年判断
复制代码
1
2
3
4
5
6
7
8
9
10
11
12y_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
复制代码
1
2
3
4
5
6
7
8% 读取多年每年,比如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日)
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36function [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创建时间序列内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复