MATLAB лучше всего решает эту проблему, используя тип данных, специально разработанный для представления дат, datetime
.Начиная с вашего Dates
вектора, вы хотите:
- Преобразовать
Dates
из массива double
в массив datetime
. - Установить формат по умолчанию для массивачтобы использовать предпочитаемый формат для чисел квартала
- Используйте массив
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».