如何将这个(更长的)向量转换为季度值(例如Q1-1991等),从而很好地绘制在Matlab的图形上?我在这个论坛上用谷歌搜索/ Matlab-help-searched /搜索,没有找到任何东西。
Dates = [19961; 19962; 19963; 19964; 19971; 19972]
答案 0 :(得分:4)
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”格式显示。