Rivers分享 http://blog.sciencenet.cn/u/sdssxwfd

博文

关于Matlab对时间数据筛选

已有 1386 次阅读 2024-8-3 10:24 |系统分类:教学心得

用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);

其他的情况可以具体情况具体分析,



https://blog.sciencenet.cn/blog-216525-1444937.html

上一篇:[转载]常用数学缩写
收藏 IP: 120.224.66.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-22 06:02

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部