2017-02-28 478 views
1

在MATLAB或倍频,我的数据有日期/时间值的格式如下:如何绘制在x轴的日期时间在MATLAB或倍频

12:00:34.626 AM 2017年2月26日

这是HH:MM:SS:SSS [A或P] M [M] M/DD/YYYY

我想在我的地块上使用它作为我的x轴,并且我尝试过使用datetickdatenumdatestr,并没有能够得到任何人使用这种格式。

如何使用此格式化的值字符串来标记我的x轴数据点?

回答

1

我会使用这些函数的组合,即datnum后跟datetick绘图后。

首先你的格式化字符串需要是'HH:MM:SS.FFF AM mm/dd/yyyy'。

请参见下面的,如果您需要更改格式: https://au.mathworks.com/help/releases/R2016b/matlab/ref/datenum.html#inputarg_formatIn

然后使用datetick转换成漂亮的格式上的情节。 https://au.mathworks.com/help/releases/R2016b/matlab/ref/datetick.html

所以单个数据点=情节,你可能有:

xdatestr=['12:00:34.626 AM 2/26/2017'; '12:00:34.626 PM 2/26/2017'] 
xdatenum=datenum(xdatestr,'HH:MM:SS.FFF AM mm/dd/yyyy') 
plot(xdatenum,[0 1]) 
datetick(gca) 

还要注意日期时间,就是做全独立的方式,并使用不同的格式字符串约定。 http://au.mathworks.com/help/matlab/ref/datetime.html

1

您可以使用以下格式:

d = datetime('12:00:34.626 AM 2/26/2017','InputFormat','hh:mm:ss.SSS a M/dd/yyyy') 

结果:

d = 
    26-Feb-2017 00:00:34 

,如果你还想看到第二的分数:

>> d.Second 
ans = 
     34.626 

对于存储在单元格数组中的多个日期字符串,只需替换字符串即可以上单元格数组。

然后,您只需编写plot(d,y)(其中y是您的数据),并以时间格式获取x轴。您可以通过使用DatetimeTickFormat属性进一步自定义格式为:

plot(d,1,'DatetimeTickFormat','hh:mm:ss.SSS a M/dd/yyyy') 

,你会得到:

DatetimeTickFormat

也看到herehere

+0

datetime没有在Octave中定义 –

+0

我没有使用Octave。你写了MATLAB _or_ Octave。 – EBH

0

另一个例子是这样的。

date={'12:00:34.600 AM 2/26/2017','12:00:34.700 AM 2/26/2017','12:00:34.800 AM 2/26/2017','12:00:34.900 AM 2/26/2017'}; 
timeFormat='HH:MM:SS.FFF AM mm/dd/yyyy'; 
xdatenum=datenum(date,timeFormat); 
data=0:3; 
plot(xdatenum,data) 
datetick('x',timeFormat,'keepticks') 
view([-20,90]) 

为了避免x ticks的重叠,我倾斜了一点。

您可以通过使用滴答属性来控制滴答的数量。

date={'12:00:34.600 AM 2/26/2017','12:00:34.700 AM 2/26/2017','12:00:34.800 AM 2/26/2017','12:00:34.900 AM 2/26/2017'}; 
timeFormat='HH:MM:SS.FFF AM mm/dd/yyyy'; 
xdatenum=datenum(date,timeFormat); 
data=0:3; 
plot(xdatenum,data) 
datetick('x',timeFormat,'keepticks') 
set(gca,'XTick',[min(xdatenum) max(xdatenum)]) 
set(gca,'XTickLabel',[date(1),date(end)]) 

在这里,我只做了两个滴答的最小日期和最大日期。

相关问题