Создать квартальный вектор дат для сюжета в Matlab - PullRequest
0 голосов
/ 23 января 2019

Как я могу преобразовать этот (намного более длинный) вектор в квартальные значения, такие как Q1-1991 и т. Д., Которые хорошо отображаются на графике в Matlab?Я гуглил / Matlab-help-search / искал в этом форуме и не нашел ничего.

Dates = [19961; 19962; 19963; 19964; 19971; 19972]

1 Ответ

0 голосов
/ 24 января 2019

MATLAB лучше всего решает эту проблему, используя тип данных, специально разработанный для представления дат, datetime.Начиная с вашего Dates вектора, вы хотите:

  1. Преобразовать Dates из массива double в массив datetime.
  2. Установить формат по умолчанию для массивачтобы использовать предпочитаемый формат для чисел квартала
  3. Используйте массив datetime непосредственно на графиках или других экранах, которые вы хотите показать на четверти.

Вам нужно немного числовогоманипулирование, чтобы получить компоненты даты в реальных количествах, представляющих биты даты, а не число, сконструированное так, чтобы оно выглядело как «дата» при отображении в десятичном виде.

Years = floor(Dates / 10);
Quarters = rem(Dates, 10);

datetime объекты описывают датуконкретный день, так что теперь, когда мы знаем квартал, подойдет любой день падения квартала.Самый простой способ построить их - это год, месяц и день, поэтому я выбираю первый день среднего месяца квартала, чтобы избежать двусмысленности на границе между кварталами:

Months = Quarters * 3 - 1;
ProperDates = datetime(Years, Months, 1);

ЭтоНовый массив имеет свойство Format, которое определяет, как отображается дата, например, когда на графиках:

ProperDates.Format = 'QQQ-yyyy`;

Этот массив теперь может быть предоставлен как данные для plot с идругие места, где будут отображаться даты, и они будут автоматически отображаться в формате «Q1-1991».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...