|
用Matlab处理与时间相关的数据时,经常要对时间进行筛选,但是时间在Matlab中是datetime数据,一般不能直接筛选(或者我没有发现),搜索其他的一些筛选方法大都是用for循环进行,或者转为字符串进行筛选,会比较费时。
如果把datetime数据利用datevec函数转为时间矩阵数据,再进行一些数学的运算,然后再利用find函数进行筛选位置,得到相应的结果后再用datetime函数把时间矩阵转换成datetime数据,可能会好很多.
如
t s
2019/1/1 00:15:00 0.4
2019/1/3 00:00:00 0.49
2019/1/3 00:15:00 0.49
... ...
2023/12/31 23:30:000.49
(1)要筛选00:15:00的数据.
t1=datetime(t);
[y,m,d,h,mm,s]=datevec(t1);
k=find(mm==15);
t2=datetime([y(k),m(k),h(k),mm(k),s(k)]);
s2=s(k);
t2变量用于把查找到的时间组合成原来的时间,s2用于筛选要的数据
(2)要筛选2020年1月份的所有数据
t_ym=y*100+m;
k=find(t_ym==2020*100+1);
t202001=datetime([y(k),m(k),h(k),mm(k),s(k)]);
s202001=s(k);
其他的情况可以具体情况具体分析,
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-22 16:09
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社