检索特定时间数据旁边的matlab时间表点



我在Matlab中有以下timetable

intersectionPoints =
10×1 timetable
Timestamp          Value 
____________________    ______
01-Feb-2016 00:00:00    1.0848
01-Feb-2016 01:00:00    1.0847
01-Feb-2016 04:00:00    1.0848
02-Feb-2016 14:07:44    1.0914
02-Feb-2016 17:21:36    1.0916
03-Feb-2016 01:49:18    1.0917
03-Feb-2016 07:18:43    1.0919
04-Feb-2016 00:53:20    1.1088
04-Feb-2016 04:18:16    1.1097
04-Feb-2016 21:38:10    1.1199

我还有以下timedate:

checkDate = datetime("03-Feb-2016 01:49:20")
checkDate = 
datetime
03-Feb-2016 01:49:20

我想从intersectionPoints时间表中检索到特定时间戳的前一行和下一行。在我的具体情况下,我需要检索以下两点:

res =
2×1 timetable
Timestamp          Value 
____________________    ______
03-Feb-2016 01:49:18    1.0917
03-Feb-2016 07:18:43    1.0919

CCD_ 4是具有两个元素的CCD_。这是intersectionPointscheckDate最近的两个点,过去和未来都与checkDate有关。我可以循环所有的时间戳值并手动检查它们,但这并不有效(我的时间表很大(。我也可以对这些元素执行手动二进制搜索,但我想知道是否有内置或更简单的方法来搜索这两个值。

如何查找已定义值旁边的timetable值?

MATLAB最酷的地方在于它是为工程师创建的,它应该像非信息学所期望的那样工作。所以简单地说,find是第一个(find(...,1)(元素,它是>,而不是你的checkDate:

time = [datetime('yesterday')
datetime('today')
datetime('tomorrow')];
checkDate = datetime('now');
Tbl = timetable(time,(1:length(time)).');
idx = find(Tbl.time > checkDate ,1);
res = Tbl(idx-1:idx,:)

相关内容

  • 没有找到相关文章

最新更新