2017-02-28 479 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)]) 

在這裏,我只做了兩個滴答的最小日期和最大日期。

相關問題