Извлечение точек расписания Matlab рядом с указанными c временными данными - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть следующее timetable в Matlab:

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 запланируйте строки, которые являются предыдущей и следующей, чтобы указать c отметку времени. В моем конкретном случае c мне нужно получить две точки:

res =

  2×1 timetable

         Timestamp          Value 
    ____________________    ______

    03-Feb-2016 01:49:18    1.0917
    03-Feb-2016 07:18:43    1.0919

res - это timetable с двумя элементами. Это две ближайшие точки от intersectionPoints до checkDate, в прошлом и будущем связанные с checkDate. Я могу l oop по всем значениям меток времени и проверять их вручную, но это не эффективно (у меня большие графики). Я также могу выполнить двоичный поиск вручную по этим элементам, но я хотел бы знать, есть ли встроенный или более простой способ поиска этих двух значений.

Как найти значения timetable которые рядом с определенным?

1 Ответ

1 голос
/ 05 апреля 2020

Самое интересное в 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,:)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...