首页 > 解决方案 > 在 Matlab 中为绘图创建季度日期向量

问题描述

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

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

标签: matlabdateplot

解决方案


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`;

这个数组现在可以作为数据提供给plots 和其他将显示日期的地方,它们将自动以“Q1-1991”格式显示。


推荐阅读