Datenums, вероятно, не будут представлять это эффективно. Они двойные, приблизительного типа, с 1,0 = 1 день; предел разрешения для последних дат составляет около 10 микросекунд. Кроме того, функции, относящиеся к datenum, не написаны для высокоточной обработки и, вероятно, не будут хорошо работать здесь.
>> datenum_precision = eps(now)
datenum_precision =
1.1642e-010
>> millisecond = 1.0/(24*60*60*1000)
millisecond =
1.1574e-008
>>
Возможно, вам лучше создать свой собственный класс, который заключает в себе «галочки» как uint64 и предоставляет методы для преобразования в удобочитаемую презентацию (например, datestr ()), выполнения сложения и вычитания, парсинга полученных строк. до значений uint64 и т. д. Что-то с таким интерфейсом.
classdef filetime
properties
tick; % An array of uint64 ticks
end
methods (Static = true)
out = parse(str); % Parse strings to @filetime
end
methods
out = filetimestr(obj); % human-readable strings
out = minus(a,b);
out = plus(a,b);
out = sort(obj);
out = datenum(obj); % maybe a lossy conversion to datenum, for convenience
end
end
Вам понадобится R2010b для выполнения арифметики на 64-битных целых числах; старые версии не поддерживают его.
Сложнее было бы, если бы вы хотели создавать графики с использованием объектов filetimetick; графики Handle Graphics не поддерживают пользовательские объекты.