2

在 Matlab 中,我有以下形式的数据:

  • “z”,一个 17'256x1 双精度,包含回归的残差,例如 -0.0596
  • “日期”,一个 17'256x1 的单元格,包含回归中每个观测值(以及残差)的日期和时间戳,例如 '10/3/2011 9:30:00 PM'

我想做的事:将残差与日期绘制为标签。观察结果不是来自连续的几天序列(即,可能有一些间隔,几天之间没有观察结果),并且有些日子的观察结果比其他日子多。每次观察我不能有一个标签,因为那将是太多标签。所以我需要以某种方式对它们进行分组,按天或按月。即在当天的所有观测值下仅显示月份和日期(例如 10/3),或者在该月的所有观测值下仅显示月份(例如 3)。使用我拥有的数据,我该怎么做?

4

1 回答 1

3

您应该能够在没有“分组”的情况下绘制它。如果您将日期转换为时间戳:

timestamps = cellfun(@(date)datenum(date), dates);

然后你可以做一个正常的情节:

plot(timestamps, z);

Matlab 将处理 xaxis 标签本身(即,它将它们均匀地分布在日期的时间范围内),但它们将是时间戳数字。要在 xaxis 上获取格式化日期,请使用:

datetick('x');
于 2012-04-14T11:57:11.233 回答