Не имея больше информации, я предполагаю, что под временем Epoch вы подразумеваете posix, или Unix time
Я бы ожидал, что он будет представлен в виде 32-разрядного целого числа., и должно быть числом секунд, отсчитываемым от «нулевого времени» (как описано в связанной вики) (оно также может быть числом с плавающей запятой, включая дробные секунды, используя ту же шкалу).
Согласно Справка Matlab для datetick , она ожидает, что данные оси будут «порядковыми номерами даты, возвращаемыми функцией datenum».Для совместимости, октава, вероятно, ожидает того же самого, хотя ссылка на функцию datetick не указывает это явно.
Формат datenum «серийный номер даты» - это другое последовательное представление времени, но он имеет другой масштаб и ссылку, чем время Epoch / posix / unix.В соответствии с описанием функции datenum , его последовательное определение - это «дата / время, введенные как серийный номер дня, с 1 января 0000, определенным как день 1».
Это длинный способ сказать, что ваше время, вероятно, выражено в единицах секунд, тогда как datenum ожидает единицы дней.
Теперь вы, вероятно, можете решить эту проблему несколькими способами.Вы можете преобразовать все свое время в масштаб datenum перед построением графика.из этого примера , что-то подобное будет работать в Matlab:
datetime(1470144960, 'convertfrom','posixtime')
Согласно ошибка # 47032 datetime еще не была реализована в Octave, но эта ошибкаВ отчете есть ссылка на репозиторий github с реализацией класса datetime (в папке inst /).
Чтобы вручную преобразовать время из unix в время matlab, вы можете выполнить следующий пример, используяследующий пример из обмена файлами Mathworks :
unix_epoch = datenum(1970,1,1,0,0,0);
matlab_time = unix_time./86400 + unix_epoch;
(при условии, что ваши данные по оси x являются переменной unix_time
)
Как только вы получите данные вшкала datenum, datetick должен работать правильно.