У меня есть два массива, которые содержат времена. Первый - это состояние устройства, указывающее, когда было включено питание, а второй массив - отметки времени фактической команды, выданной устройству. Смотрите сюжет ниже:
![enter image description here](https://i.stack.imgur.com/9IGXy.jpg)
Вертикальные пунктирные линии показывают команды включения питания, а синяя линия представляет состояние устройства (1 = вкл. 0 = выкл.).
Что я хочу сделать, это создать матрицу, сопоставляющую команды с ответами устройства. Проблема в том, что они не 1 к 1. Существуют избыточные команды и дополнительные циклы питания (от ручных операций и т. Д.). В идеале я хотел бы связать неуправляемое изменение состояния с NaN в столбце команд и аналогичным образом любые избыточные команды или команды, которые не приводят к изменению состояния на NaN в столбце состояния. Смотрите пример данных и желаемый результат ниже:
indicatesOn = [1 2 3 4 5];
commandIssue = [1.9 2.8 2.9 4.8 4.9 5.1]
matchedOutput =
NaN 1.0000
1.9000 2.0000
2.8000 NaN
2.9000 3.0000
NaN 4.0000
4.8000 NaN
4.9000 5.0000
5.1000 NaN
Таким образом, в основном время команды указано в столбце 1, а включение питания - в столбце 2. Значение NaN в столбце «Команда» будет означать, что не было предшествующей команды для изменения состояния (ручное управление устройством). Значение NaN в столбце «Состояние / включение» будет означать, что устройство не отвечает на эту конкретную команду (либо уже включено, либо введено несколько команд).
Я начал пытаться разобраться в этом и попал в кучу циклов for и множества логики if / else и подумал, что должен быть лучший способ.
Любая помощь приветствуется!
EDIT: