Как я могу преобразовать время из секунд в десятичный год в Matlab? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть набор данных, который включает секунды, прошедшие с 2000-01-01 00: 00: 00.0, и я хотел бы, чтобы они были преобразованы в десятичные годы (например, 2013.87).

Примериз набора данных:

416554767.293262
416554768.037637
416554768.782013
416554769.526386
416554770.270761
416554771.015136
416554771.759509
416554772.503884
416554773.248258
416554773.992632
416554774.737007
416554775.481381
416554776.225757
416554776.970131
416554777.714504
416554778.458880

Может кто-нибудь помочь мне в этом? Спасибо!

1 Ответ

2 голосов
/ 25 октября 2019

Вы должны быть в состоянии выполнить эти вычисления, используя методы datetime и duration. Немного похоже на это. Я старался быть осторожным с количеством секунд / год, поскольку, конечно, это зависит от того, является ли рассматриваемый год високосным.

% Original data
data = [416554767.293262
416554768.037637
416554768.782013
416554769.526386
416554770.270761
416554771.015136
416554771.759509
416554772.503884
416554773.248258
416554773.992632
416554774.737007
416554775.481381
416554776.225757
416554776.970131
416554777.714504
416554778.458880];

% Original data is seconds since 'base':
base = datetime(2000,1,1);
% Get datetimes corresponding to 'data'
dates = base + seconds(data);
% Extract the year portion from the dates
wholeYears = year(dates);
% Extract the remainder of the dates as seconds
remainderInSeconds = seconds(dates - datetime(wholeYears,1,1));
% Calculate the number of seconds in each of the years
secondsPerYear = seconds(datetime(wholeYears + 1, 1, 1) - datetime(wholeYears, 1, 1));
% Final result is whole years + remainder expressed as years
result = wholeYears + (remainderInSeconds ./ secondsPerYear);
fprintf('%.16f\n', result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...