从datenum转换回实际时间

时间:2015-04-23 15:08:50

标签: matlab datetime plot date-conversion

好的,所以我一直在搞乱应该是一个简单的问题。我试图用DD-MM-YY HH:MM:SS的格式绘制一个数字数组(双)与相关时间戳(单元格)(例如:13-Mar-15 07:23:10) )。 我可以使用datetime(time stamp)绘制单个集合。由于数据集,它在x轴上输出了漂亮的HH:MM。很好。

现在为了在同一个图上绘制2组值,我发现Matlab不喜欢将x轴两次使用date_time,所以我去了臭名昭着的datenum功能,可以在同一图表上绘制。但是,它在时间的序列值中,并且它与我的绘图大小一致(即x轴不会自动调整大小)。

应该是什么应该是一个简单的问题实际上已经导致我在互联网上试图将其重新转换回我心爱的HH:MM之后,将“时间戳”转换为连续时间。

出于示例目的,我认为不需要代码示例或数据集。 (但如果需要可以提供)

我尝试使用datetick函数,但似乎无法使其正常工作。

2 个答案:

答案 0 :(得分:0)

使用datenumdatetick的技巧是在调用datetick之前设置限制并勾选位置,然后确保它不会重做它们。

因此,在针对datenums绘制两组数据后,它将类似于:

step = 1/24; % for hourly - adjust to preference
ticks = datenum('mystarttime'):step:datenum('myendtime')
set(gca,'XTick',ticks)
datetick('x','HH:MM','keepticks','keeplimits')

答案 1 :(得分:0)

我在时间序列中工作很多,而且我经常需要绘制数据与时间/日期。

由于Matlab从来没有给我一个明确方便的解决方案,多年来我一直这样做:

我一劳永逸地定义了一个Matlab快捷方式(在matlab快捷工具栏中): shortcut toolbar

包含以下代码:

xticktemp = get(gca,'Xtick') ;
ticklabel = {datestr(xticktemp(1)) datestr(xticktemp(2:end),15) } ;
set(gca,'Xticklabel',ticklabel)
clear xticktemp ticklabel

我使用datenum转换所有时间并使用此格式进行工作(或posix时间更方便,但它是另一个故事),计算和绘图。当我现在需要一个人类可读格式的事件的时间时,我按下快捷方式,我得到类似的东西:

timeticks

当然,这种方法存在两个主要限制:

  • 这不控制刻度线的步骤(它只是复制Matlab最初设置的内容)
  • 每次缩放或平移图形时,都必须重新单击快捷方式以刷新刻度标签

出于这些原因,当我需要最终确定图形以便向其他人展示时,我不会使用这个技巧并定义我的滴答声,就像我想要的那样,但当你只是工作时,这个快捷方式节省了我的时间(可能是几天?)在过去十年中摆弄...... ....