在Matlab中为绘图创建季度日期向量

时间:2019-01-23 20:30:18

标签: matlab date plot

如何将这个(更长的)向量转换为季度值(例如Q1-1991等),从而很好地绘制在Matlab的图形上?我在这个论坛上用谷歌搜索/ Matlab-help-searched /搜索,没有找到任何东西。

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

1 个答案:

答案 0 :(得分:4)

MATLAB使用专门设计用于表示日期的数据类型datetime来最好地解决此类问题。从您要的Dates向量开始,

  1. Datesdouble数组转换为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”格式显示。