我在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_。这是intersectionPoints
与checkDate
最近的两个点,过去和未来都与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,:)